| |
| 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: Alle Elemente auf einem Layer löschen (2670 mal gelesen)
|
Headcase Mitglied Dipl.-Ing. (FH) --> Maschinenbau
Beiträge: 141 Registriert: 14.10.2004 WinXP Prof., SP3 AutoCAD Mechanical 2010 (2008) Inventor 2010 (2008)
|
erstellt am: 05. Apr. 2006 07:59 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich habe folgendes Problemchen: Ich möchte alle Zeichnungsobjekte, die sich auf einem bestimmten Layer befinden, löschen (Den Layer sozusagen leeren) Bisher habe ich mit einer Schleife für jedes Item des Workspace den zugeordneten Layer ausgelesen und jedes betreffende einzeln gelöscht:
Code:
a = ThisDrawing.ModelSpace.Count For i = a - 1 To 0 Step -1 If ThisDrawing.ModelSpace.Item(i).Layer = "Schablone" Then ThisDrawing.ModelSpace.Item(i).Delete End If Next i
Gibt es da eine sauberere Lösung? Habe das Programm unter AutoCAD2000 geschrieben, vielleicht gibt es jetzt in der 2006er Version neue Möglichkeiten? Falls jemand zu den Neuerungen im Objektmodell eine gute Übersicht kennt, wäre ich auch daran interessiert! Vielen Dank im voraus! Grüße! René [Diese Nachricht wurde von Headcase am 05. Apr. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Ehrenmitglied V.I.P. h.c. CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 ACAD20XX, defun-tools
|
erstellt am: 05. Apr. 2006 08:04 <-- editieren / zitieren --> Unities abgeben: Nur für Headcase
Hallo Rene, eigentlich sollte das auch unter 2006 'sauber' laufen. Allerdings bekommst du auf diesem Weg nicht alle Elemente zu 'greifen'. Es können ja auf dem zu löschenden Layer auch Elemente sein, die in einer Blockdefinition enthalten sind. Eine Übersicht kenne ich nicht, aber ich finde, die ActiveX-Schnittstelle ist inzwischen in der Hilfe sehr gut dokumentiert. Grüße Holger ------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 ACAD 2008 Mechanical
|
erstellt am: 05. Apr. 2006 08:09 <-- editieren / zitieren --> Unities abgeben: Nur für Headcase
..also ich würde in diesem Fall durch alle Blöcke der Blocktabelle iterieren ( da sind dann auch die Layouts und der Modelspace mit bei) und die Blockelemente auf ihren Layer untersuchen und sie dann gegebenenfalls löschen... ------------------ - 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 |
Headcase Mitglied Dipl.-Ing. (FH) --> Maschinenbau
Beiträge: 141 Registriert: 14.10.2004 WinXP Prof., SP3 AutoCAD Mechanical 2010 (2008) Inventor 2010 (2008)
|
erstellt am: 05. Apr. 2006 09:46 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank für eure schnellen Antworten! Dieses Forum ist einfach spitze, muss ich mal so sagen! Eigentlich dürften mit dem Layer keine Blockdefinitionen verknüpft sein, da sich auschließlich durch das Programm erstellte Zeichnungsobjekte dort befinden. Dann werd ich das wohl so lassen müssen.
Vielen Dank nochmal! Grüße! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 05. Apr. 2006 10:17 <-- editieren / zitieren --> Unities abgeben: Nur für Headcase
Vielleicht noch eine kleine Ergänzung, mit Filter sparst evtl. noch etwas Zeit: Code:
' alle Entitys auf "myLayer" wählen Dim FType%(0), FData(0)FType(0) = 8: FData(0) = "myLayer" AWSatz.Select acSelectionSetAll, , , FType, FData
Gruss NancyEine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Headcase Mitglied Dipl.-Ing. (FH) --> Maschinenbau
Beiträge: 141 Registriert: 14.10.2004 WinXP Prof., SP3 AutoCAD Mechanical 2010 (2008) Inventor 2010 (2008)
|
erstellt am: 05. Apr. 2006 11:30 <-- editieren / zitieren --> Unities abgeben:
Hallo Nancy, vielen Dank für diesen Tip, genau danach habe ich gesucht! So siehts jetzt aus: Code:
Sub test()Dim aw As AcadSelectionSet Set aw = SelectionSets.Add("test") Dim FType%(0), FData(0) FType(0) = 8 'Gruppencode für Layer FData(0) = "weg_damit" 'Name des Layers aw.Select acSelectionSetAll, , , FType, FData 'Auswahlsatz mit Filter aw.Erase 'Löschen aller Objekte aw.Delete 'Löschen des Auswahlsatzes End Sub
Funktioniert einwandfrei, vielen Dank nochmal! Grüße! René Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |