| |
| 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: Markierte Objekte auf einen anderen Layer legen (1921 mal gelesen)
|
Daniel Möller Mitglied Konstrukteur
Beiträge: 53 Registriert: 28.11.2006 Dell Precision T3500 Westmere Intel Xeon W3550 12,00 GB RAM 146GB SAS RAID 0 System Nvidia Quadro 2000 1GB Microsoft Windows 7 64bit AutoCAD 2010 AutoCAD P&ID 2010
|
erstellt am: 06. Jul. 2010 12:07 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, gestern habe ich der VBA Rubrik einen sehr guten Tip bekommen um alle Blöcke mit einem Namen zu markieren. Da ich nicht wirklich viel Ahnung hiervon habe könnt ihr mir vielleicht weiterhelfen. (sssetfirst nil (ssget "_x" '((0 . "INSERT")(2 . "*AQA_dpv*,*AQA_upv*,*AQA_dps*,*AQA_dpm*,*AQA_upm*,*AQA_upj*,*AQA_dpf*,*AQA_dpn* ,*AQA_dpb*")))) (nil nil) Hiermit markiere ich die Blöcke und möchte diese jetzt auf den Layer "mechanisch" legen. Kann ich den anderen Code direkt danach reinschreiben damit alles nacheinander abgearbeitet wird oder muss ich das als einzelne Funktionen sehen und separat starten? Die Hilfe in Autocad konnte mir hier noch nicht wirklich weiterhelfen. Würdet ihr für einen Einsteiger das "Kochbuch" empfehlen? Vielen Dank Grüße Daniel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 06. Jul. 2010 12:25 <-- editieren / zitieren --> Unities abgeben: Nur für Daniel Möller
Also ob du das SSSETFIRST nun benutzten mußt oder nicht kann ich nicht wissen, für die Änderung auf der Lisp-Seite ist nur ein Auswahlsatz nötigt, unabhängig davon ob etwas "markiert" ist oder nicht: (foreach elem (bau_elemli (ssget "_X" '((2 . "meinlieblingsblock")))) (entmod (subst'(8 . "MeinLayer")(assoc 8 (entget elem))(entget elem))) )
Die Funktion (defun bau_elemli findest du hier auch im Forum.
------------------ CAD.de System-Angaben - CAD on demand - User:FAQ(Acad) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 06. Jul. 2010 12:30 <-- editieren / zitieren --> Unities abgeben: Nur für Daniel Möller
Hmm ich dachte mit der Markierung eigentlich an ein Ändern im Eigenschaftsfenster .. Befehl _properties mit Lisp würd ich das rudimentär so machen :
(defun C:LAYMECH(/ AWS) (if(setq AWS (ssget "_x" '((0 . "INSERT") (2 . "*AQA_dpv*,*AQA_upv*,*AQA_dps*,*AQA_dpm*,*AQA_upm*,*AQA_upj*,*AQA_dpf*,*AQA_dpn*,*AQA_dpb*") ) ) ) (progn (setq I -1) (repeat (sslength AWS) (setq DATA(entget(ssname AWS (setq I(1+ I))))) (entmod(subst '(8 . "mechanisch") (assoc 8 DATA)DATA)) ) ) ) ) wenn dir das mit dem entmod zu kompliziert ist, geht auch
(defun C:MECHLAYER(/ A) (setq A (ssget "_x" '((0 . "INSERT")(2 . "*AQA_dpv*,*AQA_upv*,*AQA_dps*,*AQA_dpm*,*AQA_upm*,*AQA_upj*,*AQA_dpf*,*AQA_dpn* ,*AQA_dpb*")))) (sssetfirst nil nil) (command "_change" A "" "_properties" "_layer" "mechanisch" "") ) ..setzt vorraus, das der Layer existiert, Fehlerbehandlungen ect. fehlen ..
als Einstieg ist das "Kochbuch" die Empfehlung .... ------------------ - 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 |
Daniel Möller Mitglied Konstrukteur
Beiträge: 53 Registriert: 28.11.2006 Dell Precision T3500 Westmere Intel Xeon W3550 12,00 GB RAM 146GB SAS RAID 0 System Nvidia Quadro 2000 1GB Microsoft Windows 7 64bit AutoCAD 2010 AutoCAD P&ID 2010
|
erstellt am: 06. Jul. 2010 13:15 <-- editieren / zitieren --> Unities abgeben:
|
Daniel Möller Mitglied Konstrukteur
Beiträge: 53 Registriert: 28.11.2006 Dell Precision T3500 Westmere Intel Xeon W3550 12,00 GB RAM 146GB SAS RAID 0 System Nvidia Quadro 2000 1GB Microsoft Windows 7 64bit AutoCAD 2010 AutoCAD P&ID 2010
|
erstellt am: 06. Jul. 2010 13:29 <-- editieren / zitieren --> Unities abgeben:
leider funktioniert keine Variante. Wenn ich den Code in den Visual LISP Editor lade danach speichere und über Anwendung laden ausführe ist das ja richtig oder? Beim Ausführen kommt keine Fehlermeldung, wenn ich dann aber einen Block anklicke liegt er immer noch auf dem alten Layer. Der Layer Mechanisch existiert auch. Grüße Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 06. Jul. 2010 13:33 <-- editieren / zitieren --> Unities abgeben: Nur für Daniel Möller
|
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 06. Jul. 2010 13:43 <-- editieren / zitieren --> Unities abgeben: Nur für Daniel Möller
|
Daniel Möller Mitglied Konstrukteur
Beiträge: 53 Registriert: 28.11.2006 Dell Precision T3500 Westmere Intel Xeon W3550 12,00 GB RAM 146GB SAS RAID 0 System Nvidia Quadro 2000 1GB Microsoft Windows 7 64bit AutoCAD 2010 AutoCAD P&ID 2010
|
erstellt am: 06. Jul. 2010 13:57 <-- editieren / zitieren --> Unities abgeben:
Juhu es funktioniert. Naja die Anwendung habe ich geladen wußte aber nicht dass man sie nochmal in der Befehlszeile starten muss. "Ich weiß Unwissenheit schützt vor Strafe nicht" Ich kann ja in meine lsp Datei mehrere Codes hintereinander schreiben oder?
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 06. Jul. 2010 14:00 <-- editieren / zitieren --> Unities abgeben: Nur für Daniel Möller
Zitat: Original erstellt von Daniel Möller: Juhu es funktioniert. Naja die Anwendung habe ich geladen wußte aber nicht dass man sie nochmal in der Befehlszeile starten muss. "Ich weiß Unwissenheit schützt vor Strafe nicht" Ich kann ja in meine lsp Datei mehrere Codes hintereinander schreiben oder?
Du meinst Funktionen .... JA. und du kannst deine Funktionen auch gleich beim Laden ausführen lassen .... das sieht dann so aus:
(defun C:MECHLAYER(/ A) (setq A (ssget "_x" '((0 . "INSERT")(2 . "*AQA_dpv*,*AQA_upv*,*AQA_dps*,*AQA_dpm*,*AQA_upm*,*AQA_upj*,*AQA_dpf*,*AQA_dpn* ,*AQA_dpb*")))) (sssetfirst nil nil) (command "_change" A "" "_properties" "_layer" "mechanisch" "") ) (c:mechlayer) ------------------ - 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 |