| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Lisp-Aufruf (457 mal gelesen)
|
wisch Mitglied
Beiträge: 78 Registriert: 22.05.2003
|
erstellt am: 28. Nov. 2003 14:48 <-- editieren / zitieren --> Unities abgeben:
Hallo! Habe da ein eigenartiges Phänomen: Ich lade beim Start von ACADM2004 eine Lisp. In dieser Lisp steh u.a. folgende Zeile: (command "_explode" "ALLE" ) Die Lisp wird aber nach Befehlsaufruf nicht erfolgreich ausgeführt. Schreib ich diese Zeile jedoch 3x hintereinander: (command "_explode" "ALLE" ) (command "_explode" "ALLE" ) (command "_explode" "ALLE" ) funktioniert's !?! Hat da wer eine Idee?
------------------ wisch Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
T. Bürger Mitglied Technischer Angestellter
Beiträge: 201 Registriert: 30.01.2001 AcadCAD MEP 2008 (D A CH)
|
erstellt am: 28. Nov. 2003 15:12 <-- editieren / zitieren --> Unities abgeben: Nur für wisch
Hallo wisch, der Befehl _explode (Ursprung) kann mit Lisp nur ein Objekt auflösen! So geht es: (while (setq #ss# (ssget "x")) (if #ss# (command "_explode" #ss# "") ) ) Aber warum um Himmelswillen willst Du alles beim starten eine Datei in den Ursprung versetzen ------------------ Grüße Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wisch Mitglied
Beiträge: 78 Registriert: 22.05.2003
|
erstellt am: 28. Nov. 2003 15:51 <-- editieren / zitieren --> Unities abgeben:
Hi! Vorweg - bin kein Lisp-Spezialist! Habe deinen Befehl so übernommen, nur bleibt der Befehlsaufruf nicht mehr stehen - ist das eine Schleife? Der Grund ist der, ich will eigentlich nur alle Blöcke in der Zeichnung auflösen (nicht Polylinien!), denn aus dem Schriftfeld will ich über ein Wort (mit definierter Schrifthöhe 2,5mm) den Maßstabswert ausrechnen, mit dem ich später wieder einen Block mit eben diesem Maßstab einfüge. Zu dem Wort gelange ich jedoch nur, wenn es als Textelement zu finden ist und nicht in einem Block mit Attributen "vergraben" ist. ------------------ wisch Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
sinsa Mitglied zeichnerin am rande des nervenzusammenbruchs
Beiträge: 24 Registriert: 25.11.2003 ACAD 2002, xp prof., matrox 550 dual head
|
erstellt am: 28. Nov. 2003 16:34 <-- editieren / zitieren --> Unities abgeben: Nur für wisch
wähle einfach alles, gehe in die eigenschaften, wähle dort nur die blöcke und laß diese dann explodieren. voila! block konfetti gruß sinsa ------------------ toll, da lernte ich mühsam sprechen um im hohen alter mit dem lispeln anzufangen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Ehrenmitglied V.I.P. h.c. CAD on demand GmbH
Beiträge: 4171 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 28. Nov. 2003 21:46 <-- editieren / zitieren --> Unities abgeben: Nur für wisch
Hallo Wisch, es ist in der Tat eine Schleife. Nur die Bedingung zum Enden ist nicht gesetzt. Da du nur die Blöcke explodieren möchtest ist nur eine kleine Änderung notwendig, und die Schleife wird nicht merh durchlaufen, wenn kein Block mehr gefunden wird. (while (setq #ss# (ssget "_X" '((0 . "INSERT")))) (if #ss# (command "_explode" #ss# "") ) ) Bei Fragen ... Grüße Holger ------------------ Holger Brischke (defun - Lisp over night! AutoLISP-Programmierung für AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
TK_KE Mitglied
Beiträge: 67 Registriert: 15.07.2003 .
|
erstellt am: 28. Nov. 2003 23:47 <-- editieren / zitieren --> Unities abgeben: Nur für wisch
|
CADwiesel Moderator CAD4FM UG
Beiträge: 1968 Registriert: 05.09.2000 AutoCAD, Bricscad Wir machen das Mögliche unmöglich
|
erstellt am: 29. Nov. 2003 13:58 <-- editieren / zitieren --> Unities abgeben: Nur für wisch
@ Sinsa Ich denke nicht, dass du die Blockreferenz, oder sogar alle Blockreferenzen auflösen musst, um an deinen Text ranzukommen. ist der Text ein Attributwert, so kann man den ganz einfach auslesen, Tools dazu gibt's hier wie Sand am Meer, ist dein Text tatsächlich ein Text, kann man die Blocktabelle durchsuchen und den wert auslesen. Aber um's genauer zu machen, könntest du mag etwas detailiertere Angaben zu deinem Vorhaben machen, dann können wir dir evtl auch etwas genauer helfen - aber nur, falls dir dein bisheriges Vorgehen zu unbefriedigend ist.
------------------ Gruß CADwiesel Besucht uns im CHAT
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wisch Mitglied
Beiträge: 78 Registriert: 22.05.2003
|
erstellt am: 01. Dez. 2003 09:39 <-- editieren / zitieren --> Unities abgeben:
|