Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Alle Elemente auf einem Layer löschen

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
Autor Thema:  Alle Elemente auf einem Layer löschen (2645 mal gelesen)
Headcase
Mitglied
Dipl.-Ing. (FH) --> Maschinenbau


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

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 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 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



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

Beiträge: 4171
Registriert: 17.05.2001

ACAD20XX, defun-tools

erstellt am: 05. Apr. 2006 08: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 Headcase 10 Unities + Antwort hilfreich

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




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

Beiträge: 13508
Registriert: 30.11.2003

ACAD 2008 Mechanical

erstellt am: 05. Apr. 2006 08:09    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 Headcase 10 Unities + Antwort hilfreich

..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


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

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 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

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


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

Beiträge: 1361
Registriert: 13.02.2003

.

erstellt am: 05. Apr. 2006 10:17    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 Headcase 10 Unities + Antwort hilfreich

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 Nancy

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

Headcase
Mitglied
Dipl.-Ing. (FH) --> Maschinenbau


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

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 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 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

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)2023 CAD.de | Impressum | Datenschutz