| |  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | | |  | NVIDIA GTC Paris und ISC High Performance-Konferenz 2025, eine Pressemitteilung
|
Autor
|
Thema: Layer umbenennen (VBA) (2594 mal gelesen)
|
cadnetz Mitglied techn. Sachbearbeiter Elektronetzte - Fachadmin CAD

 Beiträge: 45 Registriert: 18.04.2008
|
erstellt am: 17. Feb. 2009 11:47 <-- editieren / zitieren --> Unities abgeben:         
Hallo, ich habe unmengen an alten zeichnungen, die in autocad bearbeitet werden müssen. Einige Layer sind zu löschen, andere mit Farbe etc. zu versehen.Klappt soweit ganz gut (siehe VBA-Code). Nun das Problem: Die alten haben eine einheitliche Layerstruktur, die soll auch beibehalten werden, allerdings mit dem Präfix des Dateinamens. Kann mit jemand einen Dankanstoß geben ? Ich bin noch Anfänger in VBA! [Diese Nachricht wurde von cadnetz am 17. Feb. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 17. Feb. 2009 15:27 <-- editieren / zitieren -->
Hi, In Deinem Code (nur überflogen) hast Du ein wenig mehr Probleme (aus meiner Sicht) und ich ein paar Fragen. Erstens verstehe ich nicht, aus welchem Grund man Elemente lösche aus alten Zeichnungen. Wenn Du schon layerbezogen löscht, dann kannst Du das über ein SelectionSet schneller machen (ausser Du arbeitest mit .NET und hast die DWG-Datenbank nicht im Editor, sondern nur im Memory geöffnet). Dann gäbe es auf noch Zeichnungsvorlagen, wenn Du eine Vorlage öffnest, in der die Layereigenschaften schon richtig gestellt sind, dann Deine zu modifizierende DWG in diese Vorlage einfügst, dann brauchst Du nicht mehr jedem Layer seine Eigenschaften mitgeben. Lass mich mal Deine Gedanken (bzw. Veto's mit Begründung) zu obigem wissen. - alfred - ------------------ www.hollaus.at |
cadnetz Mitglied techn. Sachbearbeiter Elektronetzte - Fachadmin CAD

 Beiträge: 45 Registriert: 18.04.2008
|
erstellt am: 18. Feb. 2009 09:55 <-- editieren / zitieren --> Unities abgeben:         
Zitat: Original erstellt von a.n.: Hi,In Deinem Code (nur überflogen) hast Du ein wenig mehr Probleme (aus meiner Sicht) und ich ein paar Fragen. Erstens verstehe ich nicht, aus welchem Grund man Elemente lösche aus alten Zeichnungen. Wenn Du schon layerbezogen löscht, dann kannst Du das über ein SelectionSet schneller machen (ausser Du arbeitest mit .NET und hast die DWG-Datenbank nicht im Editor, sondern nur im Memory geöffnet). Dann gäbe es auf noch Zeichnungsvorlagen, wenn Du eine Vorlage öffnest, in der die Layereigenschaften schon richtig gestellt sind, dann Deine zu modifizierende DWG in diese Vorlage einfügst, dann brauchst Du nicht mehr jedem Layer seine Eigenschaften mitgeben. Lass mich mal Deine Gedanken (bzw. Veto's mit Begründung) zu obigem wissen. - alfred -
alte Layerstruktur aus Zeichnung1(Auszug): 110_FLT 110_FLT_F 220_FLT 220_FLT_F
alte Layerstruktur aus Zeichnung2(Auszug): 110_FLT 110_FLT_F 220_FLT 220_FLT_F neue (angedachte) Layerstruktur in der Form "Dateinamealt-Layernamealt" (Auszug): Zeichnung1-110_FLT Zeichnung2-220_FLT Erklärung: alle (alt-)Layer mit "_F" am Ende sind sogenannte Fremdlayer, das heißt Elemente, die nicht zur eigentlichen Zeichnung gehören, sondern nur zum besseren Verständnis eingezeichnet wurden (mit dem Programm autoSketch, gespeichert als dwg). Eingezeichnet deswegen, weil AutoSketch keine Referenztechnik kann. In der neuen Zeichnungsform werden Sie nicht mehr benötigt, deswegen möchte ich sie entfernen und nicht nur frieren. Es sollen jetzt verschiedene (Alt-)Zeichnungen zusammengefasst werden. (keine Referenztechnik!). Es werden dann auch gleichnamige Layer aus verschiedenen zeichnungen mit verschiedenen inhalten in die neue zeichnung eingefügt. Um weiterhin die elemente z.B. "110_FLT" aus den verschiedenen Zeichnungen unterscheiden zu können,war meine Idee, den alten Dateinamen, der gleichzeitig auch die Inhalte der Zeichnung eindeutig beschreibt, als Präfix dem bisherigen Dateinam voranzustellen. Zu meinen VBA-Kenntnissen: Ich habe mir den Code im Forum "zusammengeklaut" und dann versucht an meine Bedürfnisse anzupassen. Gestern habe ich mir das buch AutoCAD programmieren mit VBA http://www.amazon.de/AutoCAD-programmieren-Einf%C3%BChrung-Anwendung-Referenz/dp/3827321050 bestellt. zu deinem kommentar: selectionSet sagt mir momentan noch nichts (sorry :-)) Zeichnungsvorlagen entfallen, da ich ja den alten Dateinamen als Pfäfix dem neuen Layernamen voranstellen möchte, klar, das wäre einfach. Siehe bitte auch Beispiel
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
       

 Beiträge: 13530 Registriert: 30.11.2003 ACAD 2008 Mechanical
|
erstellt am: 18. Feb. 2009 10:05 <-- editieren / zitieren --> Unities abgeben:          Nur für cadnetz
.. wenn du nicht lange rumprobieren willst: hier hatte ich schon mal ne Lösung für ein ähnliches Problem ... Layereigenschaften evtl noch nach Vorgabe anpassen könnte man noch einbauen. ------------------ - 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 |
Ex-Mitglied
|
erstellt am: 18. Feb. 2009 22:12 <-- editieren / zitieren -->
Hi, sorry, der Thread ist mir 'entglitten', lass mich wissen, wenn CADmium's Link schon zum Erfolg führt/geführt hat. Zitat: selectionSet sagt mir momentan noch nichts
Nach dem Du ja schon Erfahrung mit 'Code klauen' hast ;) solltest Du auch mit Stichwörtern mal die Developer-Hilfe von AutoCAD aufmachen und mal darin suchen, da wirst Du unter dem Begriff 'SelectionSet' fündig werden, fündig im Sinne von Beschreibung plus Beispiel. Zitat: Zeichnungsvorlagen entfallen, da ich ja den alten Dateinamen als Pfäfix dem neuen Layernamen voranstellen möchte, klar, das wäre einfach
...zumindest würdest Du Dir damit ersparen, dass Du die Layereigenschaften definieren müsstest. Als Beispiel: eine Vorlagenzeichnung hat den Layer 110_FLT schon definiert, Du fügst 'Zeichnung1.dwg' ein, damit kommen die Elemente der 'Zeichnung1.dwg' auf diesen Layer, danach machst noch umbenennen von '110_FLT' auf 'Zeichnung1-110_FLT', fertig. Aus rein privatem Interesse: wofür braucht man das ausser um eine Layerstruktur zu torpedieren (z.B. Umgang mit Layerfilter hast Du Dir damit schon mal grob verschlechtert). - alfred - ------------------ www.hollaus.at |
cadnetz Mitglied techn. Sachbearbeiter Elektronetzte - Fachadmin CAD

 Beiträge: 45 Registriert: 18.04.2008
|
erstellt am: 19. Feb. 2009 12:49 <-- editieren / zitieren --> Unities abgeben:         
Ich habe ca. 600 Zeichnungen, ähnlich wie in der test.dwg dargestellt, nur größer. Alle koordinatenmäßig so um 0,0 (x/y)gezeichnet. Alle zeichnungen haben dieselbe Layerstruktur, jeweils ca. 20 Layer. Ziel: Alle Zeichnungen in eine zusammenführen und dadurch einen Zusammenhängenden Leitungsplan erstellen. Quasi lokal georeferenzieren. Eine Übersicht erstellen. Alle Elemente werden jeweils einer Leitung zugeordnet. Dies geschieht durch Zuordnung zum Layer "Dateiname-LayerX). Danach Trennung der Layer nach dateiname in eigene zeichnungen. und anschließend die Dateien, die in Bezug zueinander stehen mit AutoCAD-Referenzen zusammenführen. Das zusammenführen in eine große zeichnung ist wichtig, um bisher doppelt gepflegtes zu erkennen und zu verbessern. Da gibt es die verschiedensten Anforderungen, welche Zeichnungen referenziert werden sollen. Ich weiß, hört sich schrecklich an, ist aber für uns eine gute Lösung. Danach haben wir einen superflexiblen, leicht änderbaren Plan. Ich habe dazu auch von anderen firmen, die AutoCAD verwenden, Rat eingeholt. Für uns ist diese Vorgehensweise ideal. Nur bin ich zu faul, die Layernamen Dateinamen händisch zu ergänzen. Außerdem muß man irgendwann mit VBA anfangen, sonst lernt man's ja nie. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 19. Feb. 2009 13:44 <-- editieren / zitieren -->
Du hast AutoCAD Map 3D ==> da ist eine Grundfunktion das Abfragen von Objekten aus mehreren Zeichnungen und gleichzeitig können Objekteigenschaften geändert werden (LayerNamen). Deine ganze Aufgabe hört sich (nach Deiner letzten Beschreibung) so an, dass Du das ganze ohne Programmierung nur mit den Map-Abfragen durchführen kannst. - alfred - ------------------ www.hollaus.at |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |