| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| Request a special discount on NVIDIA RTX 5000 Ada Generation GPU !, eine Pressemitteilung
|
Autor
|
Thema: Ursprung in Batchdatei (915 mal gelesen)
|
mundal Mitglied Techniker
Beiträge: 320 Registriert: 14.02.2005
|
erstellt am: 10. Jun. 2008 16:27 <-- editieren / zitieren --> Unities abgeben:
Hallo Zusammen, ich habe ein kleines Script geschrieben welches eine DWG lädt, danach umschaltet auf den Modellbereich, den Inhalt des Modellbereichs in den Ursprung versetzt und die Zeichnung danach wieder abspeichert. Funktioniert soweit alles, ausser dem "Sprengen" in den Ursprung. Beim "händischen" Ablauf funktioniert alles so, wie ich es möchte, leider im Script nicht. Hier Auszug aus dem Script: --------------------------- ... tilemode 1 zoom Grenzen ursprung AL _dxfout "C:\temp\A.dxf" 16 ... was ist zu tun ? Wo liegt der fehler ?
danke im voraus Joachim Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 10. Jun. 2008 16:32 <-- editieren / zitieren --> Unities abgeben: Nur für mundal
_explode verhält sich im Script und im commandaufruf so , das nur jeweils 1 Objekt aufgelöst wird. Für sowas muß man dann _explode in einer Schleife laufen lassen .. Beispiele hierfür solltest du mit der Forensuchen finden. ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mundal Mitglied Techniker
Beiträge: 320 Registriert: 14.02.2005
|
erstellt am: 10. Jun. 2008 16:45 <-- editieren / zitieren --> Unities abgeben:
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 10. Jun. 2008 16:52 <-- editieren / zitieren --> Unities abgeben: Nur für mundal
kopier dir folgende Zeilen in dein Script: (while (setq A(ssget "_x" (list'(0 . "INSERT")(cons 410 (getvar "CTAB"))))) (progn (setq NR -1) (repeat (sslength A) (command "_explode" (ssname A (setq NR(1+ NR)))) ) ) ) ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fred_tomke Mitglied Applikationsingenieur
Beiträge: 156 Registriert: 14.06.2004 Map 2015 x64 Win7 x64 12 GB RAM ADN OpenDCL
|
erstellt am: 10. Jun. 2008 16:52 <-- editieren / zitieren --> Unities abgeben: Nur für mundal
Hi, ich würde das schon so machen wie CADmium sagt, beim Laden der DWG aber eine Lisp laden, die das verschachtelte explodieren übernimmt. Ob ein verschachteltes Explodieren im Skript funktioniert, kann ich nicht beurteilen. Hinweis: nicht alles lässt ich zerhacken! Ich würde Dir gern helfen. Sende mir einfach eine Beispiel-Zeichnung und Dein Skript zu. VG, Fred ------------------ Fred Tomke Dipl.-Ing. (FH) Landespflege Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fred_tomke Mitglied Applikationsingenieur
Beiträge: 156 Registriert: 14.06.2004 Map 2015 x64 Win7 x64 12 GB RAM ADN OpenDCL
|
erstellt am: 10. Jun. 2008 16:54 <-- editieren / zitieren --> Unities abgeben: Nur für mundal
|
Theodor Schoenwald Ehrenmitglied
Beiträge: 1672 Registriert: 16.04.2002
|
erstellt am: 10. Jun. 2008 19:52 <-- editieren / zitieren --> Unities abgeben: Nur für mundal
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 11. Jun. 2008 07:57 <-- editieren / zitieren --> Unities abgeben: Nur für mundal
Zitat: Original erstellt von fred_tomke: Hi CADmium, warst schneller als ich. Bin aber überrascht, dass LISP-Ausdrücke im Script funktionieren.VG, Fred
Warum soll das nicht gehen? ( .. ist das Kommando, den Lispinterpreter zu starten und alle folgende als Lispausdruck zu werten und abzuarbeiten Alles was in der Befehlszeile geht, sollte auch im Script gehen ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mundal Mitglied Techniker
Beiträge: 320 Registriert: 14.02.2005
|
erstellt am: 11. Jun. 2008 08:25 <-- editieren / zitieren --> Unities abgeben:
Hallo Zusammen, ich habe diese LISP-Routine geschrieben. Leider löst sich der Block immer noch nicht auf. das Programm geht erst garnicht in die Schleife wenn ich es starte. (defun c:knacker ()
(while (setq A(ssget "_x" (list'(0 . "INSERT")(cons 410 (getvar "CTAB")))) (progn (setq NR -1) (repeat (sslength A) (command "_explode" (ssname A (setq NR(1+ NR)))) ) ) ) ) Was kann das noch sein ? Gruss Joachim Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADchup Ehrenmitglied V.I.P. h.c.
Beiträge: 3336 Registriert: 14.03.2001 Sicher ist, dass nichts sicher ist. Selbst das nicht. Joachim Ringelnatz
|
erstellt am: 11. Jun. 2008 09:59 <-- editieren / zitieren --> Unities abgeben: Nur für mundal
Hi, Zitat:
Was kann das noch sein ?
du hast einen Klammerfehler eingebaut, dass ist alles. Außerdem kannst du die progn-Umklammerung weglassen, da innerhalb von while-Schleifen alles abgearbeitet wird, solange die erste Bedingung erfüllt ist. Dieser Knacker wird so übrigens nur bis zum ersten XRef, MInsert und "nicht auflösbarer" Blockreferenz laufen. Die musst du also ggf. noch abfangen. Gruß CADchup
------------------ CADmaro.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 11. Jun. 2008 10:06 <-- editieren / zitieren --> Unities abgeben: Nur für mundal
Zitat: Original erstellt von CADchup:
Dieser Knacker wird so übrigens nur bis zum ersten XRef, MInsert und "nicht auflösbarer" Blockreferenz laufen. Die musst du also ggf. noch abfangen.
Richtig. Aber gerade das Abfangen aller Eventualitäten und entsprechende Reaktionen und Nutzerführung zeichnen gute Tools aus, machen sie in der Programmierung aber aufwendiger. ..aber gottseidank gibts eine ERROR-funktion oder vl-catch-all-apply .. ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mundal Mitglied Techniker
Beiträge: 320 Registriert: 14.02.2005
|
erstellt am: 11. Jun. 2008 10:15 <-- editieren / zitieren --> Unities abgeben:
hallo nochmals, ich komme einfach nicht voran. Hier nochmals mein Quellcode. (defun c:knacker () (while (setq A(ssget "_x" (list'(0 . "INSERT")(cons 410 (getvar "CTAB"))))) (setq NR -1) (repeat (sslength A) (command "_explode" (ssname A (setq NR(1+ NR)))) ) ) ) Das Programm läuft einfach nicht in die Schleife. Vielleicht sehe ich den Wald vor laauter Bäume nicht.
Wer kann mir auf die Sprünge helfen. Gruss Joachim Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 11. Jun. 2008 10:19 <-- editieren / zitieren --> Unities abgeben: Nur für mundal
Zitat: Original erstellt von mundal: hallo nochmals,Das Programm läuft einfach nicht in die Schleife. Vielleicht sehe ich den Wald vor laauter Bäume nicht. Wer kann mir auf die Sprünge helfen. Gruss Joachim
doch macht es .. hast du vielleicht gar keine Blockreferenzen im aktuellen Layout? ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADchup Ehrenmitglied V.I.P. h.c.
Beiträge: 3336 Registriert: 14.03.2001 Sicher ist, dass nichts sicher ist. Selbst das nicht. Joachim Ringelnatz
|
erstellt am: 11. Jun. 2008 10:37 <-- editieren / zitieren --> Unities abgeben: Nur für mundal
Ach, mir fallen eben noch die explode-Alternativen burst aus den Express Tools und xplode ein. Die arbeiten im Gegensatz zu explode in Lisp und Skript genauso wie an der Eingabeaufforderung. Für Plan B. Gruß CADchup ------------------ CADmaro.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |