| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Lisp/Script Anzeigenreihenfolge (3624 mal gelesen)
|
Kramer24 Ehrenmitglied V.I.P. h.c. Architekt
Beiträge: 5881 Registriert: 09.11.2001
|
erstellt am: 31. Jan. 2004 14:36 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich habe die Schnauze voll.... Ich möchte für eine wichtige Zeichnung (Lageplan meiner Diplomarbeit) immer wieder dieselbe Anzeigenreihenfolge (Schraffuren/andere Objekte gemischt) layerweise herstellen, um so Fehler vor dem Plotten zu vermeiden. Ich wollte mir die Mühe machen ein script zu erstellen. Alle Progrämmchen, die ich kenne sind mehr oder weniger ungeeignet. Ich suche einen Befehl, oä., wie ich die Objekte eines Layers aktiviere, um sie dann über "_draworder" noch oben bzw. nach unten zu schieben. Hat jemand eine Idee? Lothar ------------------ "Stellt Euch vor, es geht, und keiner kriegt's hin." (Neuss) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Claudio Mitglied Architekt
Beiträge: 334 Registriert: 13.04.2002 ACA, Revit, MAX 2020
|
erstellt am: 31. Jan. 2004 17:54 <-- editieren / zitieren --> Unities abgeben: Nur für Kramer24
;;;DIE Layer in LALI sind Beispielhaft- einfach Deine Layer ;;;der Reihe nach eintragen. (defun c:LAYDRAW (/ LALI SS1) (setq LALI (list "TEXT" "MASS")) (foreach n LALI (setq SS1 (ssget "X" (list (cons 8 n)))) (command "_draworder" SS1 "" "o") ) (princ)) ;;;Gruß Claudio Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 .
|
erstellt am: 31. Jan. 2004 19:30 <-- editieren / zitieren --> Unities abgeben: Nur für Kramer24
... und hier die Lösung von Claudio etwas abgesicherter und breiter "ausgewalzter" :--> Siehe Anhang! ( Nur der Vollständigkeit halber und weil ich das Thema auch interessant fand <grins> ) Thomas ------------------ [Diese Nachricht wurde von CADmium am 02. Feb. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Kramer24 Ehrenmitglied V.I.P. h.c. Architekt
Beiträge: 5881 Registriert: 09.11.2001
|
erstellt am: 01. Feb. 2004 16:56 <-- editieren / zitieren --> Unities abgeben:
Hallo, Danke Ihr beiden, werde mal testen. Ich denke, dass mir das hilft. @Thomas: "BTN-Ware" merk' ich mir... Lothar ------------------ "Stellt Euch vor, es geht, und keiner kriegt's hin." (Neuss) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator
Beiträge: 2490 Registriert: 02.11.2001 Windows 10 64bit AutoCAD Architecture 2018/2019 (deu/eng) AEC-Collection 2019 (Revit und Zeugs) Wenn sich's nicht vermeiden läßt: D-A-CH Erweiterung (mies implementierter Schrott)
|
erstellt am: 02. Feb. 2004 09:08 <-- editieren / zitieren --> Unities abgeben: Nur für Kramer24
|
nasswassa Mitglied Planer
Beiträge: 4 Registriert: 03.10.2003
|
erstellt am: 17. Apr. 2004 22:54 <-- editieren / zitieren --> Unities abgeben: Nur für Kramer24
|
heidi Mitglied CAD-Dienstleister
Beiträge: 1130 Registriert: 01.11.2001 Dell Precicion M6700 Nvidia Quadro K3000M AutoCAD 2012 Sp2 nXtRender Tetra4D eigene Tools Adobe CreativeSuite 6 ——————————— MacBook Pro i9 2,3/16/5 Big Sur 11.5.1 BricsCAD V21 Pro
|
erstellt am: 18. Apr. 2004 11:51 <-- editieren / zitieren --> Unities abgeben: Nur für Kramer24
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 .
|
erstellt am: 18. Apr. 2004 13:20 <-- editieren / zitieren --> Unities abgeben: Nur für Kramer24
oder - wenn du immer die gleiche Layerreihenfolgehaben willst - (defun c:SORT_BY_LAYER () (SORT_BY_LAYER '("AM_8" "AM_3" "AM_1" "AM_0" "AM_5")) ) oder mit Abfrage (defun c:SORT_BY_LAYER ( / LAYER LAYERLIST) (while (setq LAYER(getstring "\nLAYER : ")) (if (tblsearch "LAYER" LAYER) (setq LAYERLIST (cons LAYER LAYERLIST)) (princ "\nEingegebener Layer existiert nicht!") ) ) (if LAYERLIST (SORT_BY_LAYER (reverse LAYERLIST)) ) ) .. alles ungetestet.. bei Probs noch mal melden! ------------------ - Thomas - Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
TomiProg Mitglied Technischer Zeichner
Beiträge: 51 Registriert: 29.04.2004 WinNT4.0(SP6) + AutoCAD 14.01, P3/400MHz(gääähn),256MB,Graphtec KD4620, ATI 3D Rage Pro(8MB)
|
erstellt am: 16. Nov. 2004 11:39 <-- editieren / zitieren --> Unities abgeben: Nur für Kramer24
Hallo Lispler. Ich habe ein Problem mit dem "_DRAWORDER"-Command. Wenn ich den Befehl (command "_draworder" SS1 "" "o") ausführen lasse, wobei SS1 ein Auswahlsatz ist, bekomme ich nur Schrott zurück. AutoLISP setzt diesen Befehl nicht um. In der Befehlszeile bleibt das Programm stehen mit folgender Anzeige: <Auswahlsatz: xy> Ich kann nur noch Return oder ESC drücken und als Antwort auf Return bekomme ich als Meldung: Unbekannter Befehl "TEST". Drücken Sie F1-Taste ... Unbekannter Befehl "TEST". Drücken Sie F1-Taste ... Unbekannter Befehl "U". Drücken Sie F1-Taste ... (Test ist der Programmname "DEFUN C:TEST()...") Kann mir jemand sagen, woran das liegen kann?
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADwiesel Moderator CAD4FM UG
Beiträge: 1968 Registriert: 05.09.2000 AutoCAD, Bricscad Wir machen das Mögliche unmöglich
|
erstellt am: 16. Nov. 2004 13:48 <-- editieren / zitieren --> Unities abgeben: Nur für Kramer24
|
TomiProg Mitglied Technischer Zeichner
Beiträge: 51 Registriert: 29.04.2004 WinNT4.0(SP6) + AutoCAD 14.01, P3/400MHz(gääähn),256MB,Graphtec KD4620, ATI 3D Rage Pro(8MB)
|
erstellt am: 16. Nov. 2004 14:50 <-- editieren / zitieren --> Unities abgeben: Nur für Kramer24
Sehr witzig, CADwiesel ;-) Nun gut. Es genügt wohl nicht, wenn ich die entscheidene Zeile preisgebe. Hier der ganze Code, der so nicht funktionieren will: (defun c:test(/ objekt) (setq objekt (ssget "L")) ;letztes Objekt auswählen. Ist eine Solid-Schraffur (command "_draworder" objekt "" "u") (princ)) Wenn hier jemand ein Return zuviel erkennt, dann kann der Code wie von Claudio (ganz oben) auch nicht funktionieren.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADwiesel Moderator CAD4FM UG
Beiträge: 1968 Registriert: 05.09.2000 AutoCAD, Bricscad Wir machen das Mögliche unmöglich
|
erstellt am: 16. Nov. 2004 16:47 <-- editieren / zitieren --> Unities abgeben: Nur für Kramer24
in diesem Lisp ist logischerweise genausokein Fehler drin, wie in deinem vorherigen Posting. gehe einfach mal dein Lisp im VL-Editor - im debuggmodus durch und überwache mal (getvar "cmdactive") irgendwo wird die Setvar bei einem Commandbefehl auf 1 stehen - vielleicht sogar schon bevor du zu dem draworder - command kommst. Aber der Fehler wird sicherlich bei irgendeinem command liegen, das nicht beendet wurde. ------------------ Gruß CADwiesel Besucht uns im CHAT
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
TomiProg Mitglied Technischer Zeichner
Beiträge: 51 Registriert: 29.04.2004 WinNT4.0(SP6) + AutoCAD 14.01, P3/400MHz(gääähn),256MB,Graphtec KD4620, ATI 3D Rage Pro(8MB)
|
erstellt am: 17. Nov. 2004 15:12 <-- editieren / zitieren --> Unities abgeben: Nur für Kramer24
Zitat: Original erstellt von CADwiesel: in diesem Lisp ist logischerweise genausokein Fehler drin, wie in deinem vorherigen Posting.gehe einfach mal dein Lisp im VL-Editor - im debuggmodus durch und überwache mal (getvar "cmdactive") irgendwo wird die Setvar bei einem Commandbefehl auf 1 stehen - vielleicht sogar schon bevor du zu dem draworder - command kommst. Aber der Fehler wird sicherlich bei irgendeinem command liegen, das nicht beendet wurde.
Das bedeutet, sollange ich noch ein Command-Befehl offen habe, sprich cmdactive ist ungleich 0, oder in diesem Falle 1, dann bricht Lisp mir den draworder-Befehl ab oder führt ihn nicht richtig aus. Aha. Und wie schließe ich noch offene Commands? Die benutze ich ganz selten in meinem Code. Aber mal was anderes. Ich habe das Problem mit dem draworder-Befehl andersweitig gelöst. Es gibt eine ARX-Prozedur namens Acadunsupport. Ich habe daraus den VBA-Befehl "EvalLispExpr" benutzt und siehe da, dort funktioniert es. Aber trotzdem vielen Dank für deine Hilfe. Werde am Lisp-Command dran bleiben und bei mir mal ergründen, wo noch ein offener Command steht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator
Beiträge: 2490 Registriert: 02.11.2001 Windows 10 64bit AutoCAD Architecture 2018/2019 (deu/eng) AEC-Collection 2019 (Revit und Zeugs) Wenn sich's nicht vermeiden läßt: D-A-CH Erweiterung (mies implementierter Schrott)
|
erstellt am: 17. Nov. 2004 15:33 <-- editieren / zitieren --> Unities abgeben: Nur für Kramer24
|