Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  AutoCAD VBA
  Layer zusammenfassen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
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


Sehen Sie sich das Profil von noctis79 an!   Senden Sie eine Private Message an noctis79  Schreiben Sie einen Gästebucheintrag für noctis79

Beiträge: 164
Registriert: 07.10.2009

erstellt am: 20. Dez. 2011 19:57    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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



Sehen Sie sich das Profil von CAD-Huebner an!   Senden Sie eine Private Message an CAD-Huebner  Schreiben Sie einen Gästebucheintrag für CAD-Huebner

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für noctis79 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von KlaK an!   Senden Sie eine Private Message an KlaK  Schreiben Sie einen Gästebucheintrag für KlaK

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für noctis79 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von noctis79 an!   Senden Sie eine Private Message an noctis79  Schreiben Sie einen Gästebucheintrag für noctis79

Beiträge: 164
Registriert: 07.10.2009

erstellt am: 21. Dez. 2011 07:11    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von noctis79 an!   Senden Sie eine Private Message an noctis79  Schreiben Sie einen Gästebucheintrag für noctis79

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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



Sehen Sie sich das Profil von KlaK an!   Senden Sie eine Private Message an KlaK  Schreiben Sie einen Gästebucheintrag für KlaK

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für noctis79 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von noctis79 an!   Senden Sie eine Private Message an noctis79  Schreiben Sie einen Gästebucheintrag für noctis79

Beiträge: 164
Registriert: 07.10.2009

erstellt am: 21. Dez. 2011 13:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Super!
Noch ein paar & ergänzt und das Ganze läuft!

Herzlichen Dank!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2025 CAD.de | Impressum | Datenschutz