| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
 | PNY: der unverzichtbare Partner für umfassende KI-Lösungen von Workstations bis zu Edge Computing und KI-Cluster-Bereitstellung, eine Pressemitteilung
|
Autor
|
Thema: Layer zusammenfassen (2524 mal gelesen)
|
noctis79 Mitglied Konstrukteur/ CAD-Administrator
 
 Beiträge: 164 Registriert: 07.10.2009
|
erstellt am: 20. Dez. 2011 19:57 <-- editieren / zitieren --> Unities abgeben:         
Erstmal Hallo ins ACAD VBA- Forum. Bin sonst nur im IV VBA- Forum unterwegs und muss euch jetzt hier auch mal nerven...  Gleich zur Frage: Ist es über VBA möglich Layer zusammenzufassen? Wenn ich aus Inventor einen DXF- Export ausführe vergebe ich über eine XML- Datei 3 neue Layer. Die vorhandenen Layer werden dann in der gleichen Datei einfach umbenannt in die neu erstellten Layer. Dadurch kann ich 15 Layer zu 3 zusammenfassen. Im ACAD habe ich es jetzt über eine for each Schleife probiert. Code: For Each Layer In LayerList LayerObj.Name = "testLayer" Next LayerObj
Leider bringt er hier den Fehler der Doppelbelegung... Danke für eure Unterstützung! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer

 Beiträge: 9807 Registriert: 01.12.2003 AutoCAD 2.5 - 2022, LDD, MDT, RD, ADT, Civil Inventor AIP 4-11, 2008 -2022 Win 10
|
erstellt am: 20. Dez. 2011 21:04 <-- editieren / zitieren --> Unities abgeben:          Nur für noctis79
Reicht nicht das eingebaute Kommando LAYZUSF / _LAYMRG in AutoCAD? Z.B. als Lisp-Makro (command "layzusf" "n" "Layer1" "n" "Layer2" "n" "Layer3" "" "n" "0" "j") oder in VBA über Sendcommand ThisDrawing.SendCommand "_laymrg" & vbCr & "Layer1" & vbCr & "n" ... usw. ------------------ Mit freundlichem Gruß Udo Hübner www.CAD-Huebner.de [Diese Nachricht wurde von CAD-Huebner am 20. Dez. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin

 Beiträge: 2855 Registriert: 02.05.2006 AutoCAD LandDesktop R2 bis 2004 Civil 3D 2005 - 2025 Plateia, Canalis Visual Basic
|
erstellt am: 21. Dez. 2011 00:27 <-- editieren / zitieren --> Unities abgeben:          Nur für noctis79
Hallo noctis79, Ungetestet würde ich sagen nein das geht so nicht. Auch nicht wenn Du den Variablennamen richtig schreiben würdest.
Code:
For Each LayerObj In LayerList LayerObj.Name = "testLayer" Next LayerObj
Wenn müßtest Du eine Schleife über alle Entities laufen lassen, dort den Layernamen ändern und anschließend die nicht mehr gewünschten Layer löschen. Oder Du verwendest gleich Udo's Vorschlag 
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
noctis79 Mitglied Konstrukteur/ CAD-Administrator
 
 Beiträge: 164 Registriert: 07.10.2009
|
erstellt am: 21. Dez. 2011 07:11 <-- editieren / zitieren --> Unities abgeben:         
Stimmt, geb ich Dir recht... Mein Lösungsansatz ist jetzt folgender: Lisp- Datei erstellt und diese wird vom ACAD beim Start mitgeladen. Inhalt Lisp- Datei: Code: (defun C:asdf (/ Laytrans) (cond ((not (member "laytrans.arx" (arx))) (arxload "laytrans"))) (acet-laytrans "standard.dws" (+ 1 2 4))) (princ)
Dementsprechend eine dws- Datei über den Layermanager erstellt welche die vorhandenen Layer zu den neuen zusammenfasst. Aufruf von asdf dann über VBA mit dem SendCommand Befehl... Gefällt mir zwar nicht aber funktioniert... Danke für Deine Hilfe! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
noctis79 Mitglied Konstrukteur/ CAD-Administrator
 
 Beiträge: 164 Registriert: 07.10.2009 Inventor Simulation 2011 - 64-Bit-Edition Productstream Professional Pro 2011
|
erstellt am: 21. Dez. 2011 11:10 <-- editieren / zitieren --> Unities abgeben:         
Hallo CAD-Huebner, interessant wäre die Variante über ThisDrawing.SendCommand "_laymrg" & vbCr & "Layer1" & vbCr & "n" Wenn ich den Befehl über VBA ausführen lasse geht allerdings das Fenster "Layer zusammenführen" auf. Dieses Fenster enthält dann eine Auflistung der vorhandenen Layer. Kann ich das Fenster dann umgehen und den Layernamen direkt eingehen? Bin wie gesagt nur Inventor- User und habe normal mit ACAD nichts am Hut... Version: 2011 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin

 Beiträge: 2855 Registriert: 02.05.2006 AutoCAD LandDesktop R2 bis 2004 Civil 3D 2005 - 2025 Plateia, Canalis Visual Basic
|
erstellt am: 21. Dez. 2011 12:58 <-- editieren / zitieren --> Unities abgeben:          Nur für noctis79
Probiere es mal mit: ThisDrawing.SendCommand "-laymrg" & vbCr & "n" & vbCr & "Loeschlayer_1" & vbCr & "Loeschlayer_2" & vbCr & _ vbCr & _ "n" & "Ziellayer" & vbCr & _ "J " Mit der zweiten Zeile beendest Du die Eingabe der Ausgangslayer 3. Zeile = Eingabe des Ziellayers 4. Bestätigen (in der englischen Version hier "y "
[Diese Nachricht wurde von KlaK am 21. Dez. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
noctis79 Mitglied Konstrukteur/ CAD-Administrator
 
 Beiträge: 164 Registriert: 07.10.2009
|
erstellt am: 21. Dez. 2011 13:10 <-- editieren / zitieren --> Unities abgeben:         
|