Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Rund um AutoCAD
  Alle Objekte 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 Objekte auf einem Layer löschen (11526 mal gelesen)
Iris2
Mitglied
CAD-Admin


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

Beiträge: 1170
Registriert: 17.02.2004

REVIT
TEKLA Structures
AutoCAD / Soficad
ACA
Microstation

erstellt am: 17. Feb. 2004 14:51    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,

ich suche ein tool (oder sollte es da schon einen Befehl geben?)
mit dem man alle Objekte, die auf einem Layer liegen durch anklicken eines Objekts (das auf diesem Layer liegt) löschen kann, so dass der Layer anschließend bereinigt werden kann.


----Autocad 2002/ADT 3.3 + Aplikation ----


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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 17. Feb. 2004 14: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 Nur für Iris2 10 Unities + Antwort hilfreich

Ja das geht, aber wenn du ihn sowieso nachher löschen möchtest
empfehle ich LAYDEL aus den Expresstools ! - da wird er sogar anschließend gelöscht -

(ohne Layerbereinigen u. ohne verschacht. Objekte = getsel - ebenfalls aus den ETools)

oder über den Filter, oder über die Schnellauswahl (ohne "picken")

------------------
- Sebastian Mattis -

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

Iris2
Mitglied
CAD-Admin


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

Beiträge: 1170
Registriert: 17.02.2004

REVIT
TEKLA Structures
AutoCAD / Soficad
ACA
Microstation

erstellt am: 17. Feb. 2004 15: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

Merci,

das ist der Befehl den ich gesucht hab!


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


Ex-Mitglied

erstellt am: 18. Feb. 2004 10:23    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Zitat:
Original erstellt von Iris2:
Merci,
das ist der Befehl den ich gesucht hab!

Sehr viel einfacher als der Filter und hochflexibel und wirklich keine Kunst ist die Auswahl mittels LISP:

Befehl: Löschen
Objekte wählen: (ssget "X" '((8 . "MEINLAYER")))
...

Wenn Du auch weitere Elemente auf anderen Layern löschen willst:
(ssget "X" '((8 . "MEINLAYER,ANDERERLAYER,UNDNOCHEINER")))

Und wenn Du nur die Linien darauf löschen willst:
(ssget "X" '((0 . "LINE")(8 . "MEINLAYER")))

Gruß
Tom Berger

------------------
Architekturwerkzeuge für AutoCAD: http://www.archtools.de

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

AutoCAD 20XX, defun-tools

erstellt am: 18. Feb. 2004 10:29    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 Iris2 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von tom.berger:
Sehr viel einfacher als der Filter und hochflexibel und wirklich keine Kunst ist die Auswahl mittels LISP:

Befehl: Löschen
Objekte wählen: (ssget "X" '((8 . "MEINLAYER")))
...


@Tom Berger

was aber, wenn die Objekte in irgendwelchen Blöcken verschachtelt sind?
Dann ist etwas mehr Aufwand zu treiben.

Einfacher aber auch nur für den, der sich sowohl mit der Syntax von AutoLISP und der DXF-Referenz auseinander gesetzt hat. Ich glaube kaum, dass es für den AutoCAD-ANWENDER eine ernst zu nehmende Alternative darstellt, mit solchen Anweisungen zu arbeiten.

Grüße Holger

------------------
Holger Brischke
(defun - Lisp over night!
AutoLISP-Programmierung für AutoCAD
Da weiß man, wann man's hat!

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

Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.

erstellt am: 18. Feb. 2004 10: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 Nur für Iris2 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von tom.berger:
Sehr viel einfacher als der Filter und hochflexibel und wirklich keine Kunst ist die Auswahl mittels LISP:

Befehl: Löschen
Objekte wählen: (ssget "X" '((8 . "MEINLAYER")))
...


Hallo Tom!
Was ist mit Elementen in Blöcken? .. die erfaßt ssget nicht! und damit klappts dann auch nicht mit dem Bereinigen!


Gruß Thomas

------------------

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

cadwomen
Ehrenmitglied V.I.P. h.c.
Mädchen für fast alles


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

Beiträge: 2966
Registriert: 26.08.2002

ACAD R11 - 2022
(Plant3D)
AVIS
ACAD LT 2013- 2021
ZWCAD 2015 Versuch "nun ja"
[s]History P3D 2012/(13) SP und Hotfix([/s]<P>
Windows 10 / 64 Bit
Xeon CPU 3.5GHz
16GB Ram
NVIDIA Quadro P2000
3x Dell TV100 88P Monitore

erstellt am: 05. Apr. 2004 15: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 Nur für Iris2 10 Unities + Antwort hilfreich

Soficadhandbuch - löschen,Layer, ist schon seid Ver 12 im Menü
nd cw

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

CADchup
Ehrenmitglied V.I.P. h.c.




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

Beiträge: 3329
Registriert: 14.03.2001

Sicher ist, dass nichts sicher ist. Selbst das nicht.
Joachim Ringelnatz

erstellt am: 05. Apr. 2004 21:55    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 Iris2 10 Unities + Antwort hilfreich

Hi cw,

herzlichen Glückwunsch zum 700ersten, aber das war, glaube ich, nicht das Thema! ;-)


Gruß
CADchup

------------------
www.cadditions.de

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

CADaLog
Mitglied
Architekt


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

Beiträge: 46
Registriert: 03.07.2003

Acad 2010
XP Prof.
4x2800MHz Intel; 2084MB Ram; 70GB HD

erstellt am: 04. Apr. 2007 15:23    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 Iris2 10 Unities + Antwort hilfreich

Hallo Zusammen!

Gibt es auch eine Möglichkeit pauschal alle Objekte zu löschen die auf deaktivierten Layern liegen sind?! (Und am Besten die Layer gleich mit...)

Situation: Eine große Grundrisszeichnung liegt als Referenz unter einer anderen Zeichnung. Die meisten der Referenzlayer sind deaktiviert. Diese Zeichnung soll als dwg verteilt werden. Nach dem binden der Referenz möchte ich nun alles an Objekten und Layern löschen was nicht dargestellt wird, um die Dateigröße zu verringern. Als dwg2007 sind es inkl. Referenzzeichnung immerhin ca.14MB.
Jemand eine Idee?!

Gruß
Thomas

------------------
Gruß
Thomas

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 04. Apr. 2007 15:41    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 Iris2 10 Unities + Antwort hilfreich

Interessieren dich dabei die Layouts ? Wenn nicht: Einfach mit WBLOCK alle sichtbareb Objekte (Objektwahl Fesnter) als DWG rausschreiben

------------------
die alte SUCHfunktion.. - System-Angaben - User:FAQ(Adesk)

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

Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.

erstellt am: 04. Apr. 2007 17: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 Nur für Iris2 10 Unities + Antwort hilfreich


LAYERDELETE-X.VLX.txt

 
ich hab da noch was zum Testen. Anhang als vlx speichwern und mittels _appload laden .. Aufruf mit: LAYERDELETE-X

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

Katana
Mitglied



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

Beiträge: 24
Registriert: 13.09.2006

Win XP SP2
ACAD 08

erstellt am: 08. Aug. 2007 08:26    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 Iris2 10 Unities + Antwort hilfreich

Hallo CADmium

Wollte dein Programm ausprobieren, da ich genau das suche, wie oben bereits beschrieben.

Beim Versuch dein Programm zu starten kam folgende Meldung:

no function definition: C:LAYERDELETE-X

Hast du eine Antwort darauf?

Gruss und Dank

Katana

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

Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.

erstellt am: 08. Aug. 2007 21:43    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 Iris2 10 Unities + Antwort hilfreich

@Katana: ich hab dir dazu mal ne Mail mit einer neu compilierten Fassung geschickt.

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

CADaLog
Mitglied
Architekt


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

Beiträge: 46
Registriert: 03.07.2003

Acad 2010
XP Prof.
4x2800MHz Intel; 2084MB Ram; 70GB HD

erstellt am: 07. Jun. 2013 10:36    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 Iris2 10 Unities + Antwort hilfreich

Hallo Cadmium,

mir geht es wie katana.
Ich glaube das layerdelete-x Tool löst mein Problem (gebundene Referenzen in denen die meisten Layer gefroren sind, die aber die Dateigröße riesig werden lassen). Kriege aber auch die Fehlermeldung und kann keine funktionsfähige Version finden.

Gruß
Thomas

------------------
"Das hat sich im Bauablauf so ergeben!"

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

rexxitall
Mitglied
Dipl. -Ing. Bau


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

Beiträge: 266
Registriert: 07.06.2013

erstellt am: 09. Jun. 2013 16:19    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 Iris2 10 Unities + Antwort hilfreich

bissi VBA als Startpunkt
Sollte Entitys auf deaktivierten Layern löschen als auch entitys in blockreferencen die ebenfalls auf deaktivierten layern rumlungern
Final versucht es auch noch die leeren layer loszuwerden.


Um Zeichnungen auszumisten emfehlen sich ferner die Befehle
_PURGE
und
_OVERKILL

Sub Layer_kill_entitys_on_deactivated_layers()
    Dim layersum    As String
    Dim layer      As String
    Dim L()        As String

    Dim objlayer    As AcadLayer
  On Error Resume Next
    Dim entity As AcadEntity
 
'build list of deactivated layers
    For Each objlayer In ThisDrawing.layers
        If objlayer.LAYERON = False Then
            If InStr(layersum, objlayer.NAME) = 0 Then layersum = layersum & objlayer.NAME & vbLf

            On Error Resume Next
            objlayer.Freeze = False 'layer must be unlocked to get entitys deleted....
            objlayer.LAYERON = True
            objlayer.Lock = False

            On Error GoTo 0
            Exit Sub
        End If
    Next

    'kill entitys in blockdefinitions on such a layer
    For Each blockdef In ThisDrawing.BLOCKS
        For Each entity In blockdef
              If InStr(layersum, entity.layer) <> 0 Then entity.Delete
        Next
    Next blockdef
 
    'kill left over single entitys on such a layer
    For Each entity In ThisDrawing.modelspace
        If InStr(layersum, entity.layer) <> 0 Then entity.Delete
    Next
    'same for the paperspace
    For Each entity In ThisDrawing.PaperSpace
        If InStr(layersum, entity.layer) <> 0 Then entity.Delete
    Next
   
    'kill the layers itselv
    For Each objlayer In ThisDrawing.layers
      If InStr(layersum, objlayer.NAME) <> 0 Then objlayer.Delete
    Next
   
   
End Sub


------------------
wer es nicht versucht, hat schon verlorn

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

Ingenieur Studio HOLLAUS
Mitglied
CAD / CAFM / GIS Beratung-Programmierung-Schulung


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

Beiträge: 1049
Registriert: 06.11.2008

Autocad 2 bis Autocad 2020 (+Map3D, +Civil3D, +Infraworks)
RKV .... CAFM+mehr
HMap ... Vermessung und Verkehr
OoC .... Raumplanung
CBox ... Tools für AutoCAD und BricsCAD (kostenfrei)

erstellt am: 10. Jun. 2013 00:18    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 Iris2 10 Unities + Antwort hilfreich

Zitat:
Sollte Entitys auf deaktivierten Layern löschen
ACHTUNG, wenn ein Layer mit Name "AAA" ausgeschaltet ist (aus der Sicht des Tools "deaktiviert ist", daher zu leeren ist), dann werden auch Elemente gelöscht, die auf einem Layer "A" oder einem Layer "AA" liegen, selbst dann, wenn diese nicht "deaktiviert" waren.

Begründung: dieser Ausdruck
  If InStr(layersum, entity.layer) <> 0
durch Werte ersetzt sieht dies dann wie folgt aus:
  If InStr("AAA" & vbLf, "A") <> 0
und ergibt "wahr", daher wird gelöscht.

Abhilfe: die Sammlung der Layernamen in einer Collection sammeln, oder wenn es unbedingt eine Zeichenkette sein soll, dann mit Trennzeichen zusammensetzen und dann auch mit Trennzeichen prüfen.

------------------


www.cars4fun.at

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

rexxitall
Mitglied
Dipl. -Ing. Bau


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

Beiträge: 266
Registriert: 07.06.2013

erstellt am: 10. Jun. 2013 08:15    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 Iris2 10 Unities + Antwort hilfreich

Hi DANKE,

stimmt !!!
der Fall ist mir durch die Lappen gegangen
Bitte alle 4 Zeilen dahingehend modifizieren.

Collections oder dictionarys waeren auch moeglich klar
nur ist der performancegewiin bei ner einmal anwendung recht gering
aber der coding und lernaufwand sehr hoch.
In diesem fall ist die Stringmethode primitiver einfacher und
bei einer Zeichnung -  her jeh, lassen mer's halt bei ner Zigarettenpause laufen.
Es duerfte davon abhaengig sein wieviele layer deaktiviert sind.
und nun koennen wir Benchmarks coden wann die Collections effizienter sind.
Die Windows Scripting hosts Dictionarys setz ich recht gern ein
Sie sind vergleichsweise Performat und das API ist einfach 
If key exist then delete entity

LG aus Finnland
ups ich muss los schaffen fahn ..
------------------
wer es nicht versucht, hat schon verlorn

[Diese Nachricht wurde von rexxitall am 10. Jun. 2013 editiert.]

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

CADaLog
Mitglied
Architekt


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

Beiträge: 46
Registriert: 03.07.2003

Acad 2010
XP Prof.
4x2800MHz Intel; 2084MB Ram; 70GB HD

erstellt am: 10. Jun. 2013 09:15    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 Iris2 10 Unities + Antwort hilfreich

Schön wenn ihr versteht was ihr mir damit sagen wollt,  aber ich kann damit nicht so richtig was anfangen.
Kann mir das evtl. jemand übersetzen? hatte auf ein einfaches Tool wie delete-x gehofft.
Mit VBA kenn ich mich überhaupt nicht aus. Bräuchte leider ne Anleitung für Doofe um zu testen, ob das für mich funktioniert.

Gruß
Thomas

------------------
"Das hat sich im Bauablauf so ergeben!"

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

rexxitall
Mitglied
Dipl. -Ing. Bau


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

Beiträge: 266
Registriert: 07.06.2013

erstellt am: 10. Jun. 2013 17: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 Iris2 10 Unities + Antwort hilfreich

Hi,
Wir sind hier nicht bei "wuensch dir was". *lach*
(Wuensch dir was kosted Geld... und meinen Stundensatz will dein Chef definitiv nicht bezahlen    )

Variante A du probierst es aus:

Du machst in deiner Zeichnung ALT+F12
da hast du den VBA editor


(die Zeichnung hast du vorher braf gesichert falls was schiefgeht)


Links autocadObjecte klicken
Rechte Maustaste "Modul einfuegen"
Kommt ein weisses Fenster
steht oben option explizit - bitte selbiges entfernen


Da nun mit copy and paste den Quelltext einfuegen
'####################
Ein _ am ende deutet an das die Zeile weitergehen muss
zerhackt hier der Editor

also z.B.
            If InStr(layersum, objlayer.NAME) = 0 Then layersum = _ layersum & objlayer.NAME & vbLf

muss in einer Zeile stehen ohne das _ dazwischen

wenn das alles soweit fertig ist

einmal irgendwo da reinklicken und tapfer F5 druecken.
Bei ner 6 MB Zeichnung roedelt das nun xca. 10-20 sekunden und dein problem ist geloest. Den code hab ich mittlerweile getested der funktioniert.

Zu VBA gibts auch massenweise Tutorials.

'code start -------------------------------------------------------

Sub Layer_kill_entitys_on_deactivated_layers()
    Dim layersum As String
    Dim layer As String
    Dim L() As String

    Dim objlayer As AcadLayer
    On Error Resume Next
    Dim entity As AcadEntity
    Dim DOIT As Boolean
    DOIT = False
    'build list of deactivated layers
    For Each objlayer In ThisDrawing.layers
        If objlayer.LAYERON = False Then
            If InStr(layersum, objlayer.NAME) = 0 Then layersum = _ layersum & objlayer.NAME & vbLf
            DOIT = True
            On Error Resume Next
            objlayer.Freeze = False    'layer must be unlocked to get 'entitys deleted....
            objlayer.LAYERON = True
            objlayer.Lock = False

            On Error GoTo 0

        End If
    Next

    If DOIT Then
        On Error Resume Next
        'kill entitys in blockdefinitions on such a layer
        For Each blockdef In ThisDrawing.BLOCKS
            For Each entity In blockdef
                If InStr(layersum, entity.layer & vbLf) <> 0 Then _ entity.Delete
            Next
        Next blockdef

        'kill left over single entitys on such a layer
        For Each entity In ThisDrawing.modelspace
            If InStr(layersum, entity.layer & vbLf) <> 0 Then _ entity.Delete
        Next
        'same for the paperspace
        For Each entity In ThisDrawing.PaperSpace
            If InStr(layersum, entity.layer & vbLf) <> 0 Then _ entity.Delete
        Next

        'kill the layers itselv
        For Each objlayer In ThisDrawing.layers
            If InStr(layersum, objlayer.NAME & vbLf) <> 0 Then _ objlayer.Delete
        Next
    End If
    ThisDrawing.PURGEALL
 

End Sub
'code end ------------------------------------------------------------

Variante B ... (Wir warten arten auf Godot)
Lieben Gruss aus Finnland

http://www.hyperpics.com/eBooks/Intro_to_VBA_for_AutoCAD/Introduction_to_VBA_for_AutoCAD_%28Mini_Guide%29.pdf

------------------

die unterstriche bitte einfach entfernen final in der Ansicht siehts gut aus
"_" = VBA Zeile geht weier in der naechsten Zeile

wer es nicht versucht, hat schon verlorn

[Diese Nachricht wurde von rexxitall am 10. Jun. 2013 editiert.]

[Diese Nachricht wurde von rexxitall am 10. Jun. 2013 editiert.]

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

Ingenieur Studio HOLLAUS
Mitglied
CAD / CAFM / GIS Beratung-Programmierung-Schulung


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

Beiträge: 1049
Registriert: 06.11.2008

Autocad 2 bis Autocad 2020 (+Map3D, +Civil3D, +Infraworks)
RKV .... CAFM+mehr
HMap ... Vermessung und Verkehr
OoC .... Raumplanung
CBox ... Tools für AutoCAD und BricsCAD (kostenfrei)

erstellt am: 11. Jun. 2013 10:29    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 Iris2 10 Unities + Antwort hilfreich

Was hat sich jetzt geändert? Diese Zeile
      If InStr(layersum, objlayer.NAME & vbLf) <> 0
ergibt mit eingesetzten Werten
      If InStr("AAA" & vbLf, "A" & vbLf) <> 0
noch immer TRUE, also wird noch immer der Inhalte von Layer "A" gelöscht, auch wenn nur der Layer "AAA" ausgeschaltet war. Also wird mit Deinem Code in 10-20sec. ("roedelt das nun xca. 10-20 sekunden") auch falsches gelöscht.

Für das Sammeln der ausgeschalteten Layer könnte man verwenden (wenn man sich gegen Lernen von Collections wehrt  ):
      If InStr(layersum, ";" & objlayer.NAME & ";") = 0 Then layersum = layersum & ";" & objlayer.NAME & ";"
Und für die Abfrage/den Vergleich:
      If InStr(layersum, ";" & objlayer.NAME & ";") <> 0
Damit ist ein eindeutiges Trennzeichen verwendet, welches im Layernamen nicht vorkommen darf und "A" wird nicht mehr als ident zu "AAA" erkannt. Der Vergleich jetzt lautet  InStr(";AAA;",";A;")  und das passt so.

------------------


www.cars4fun.at

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

rexxitall
Mitglied
Dipl. -Ing. Bau


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

Beiträge: 266
Registriert: 07.06.2013

erstellt am: 11. Jun. 2013 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 Nur für Iris2 10 Unities + Antwort hilfreich

Hi
pack halt noch ein vblf davor und dann ist damit auch Ruhe    
dann muss sumlayer mit einem beginnenden vblf initialisiert werden.
Ich frag jetzt mal besser ned welcher "experdde" layer mit "aaa" anfangen laesst.
(Muss ne anale phase durchmachen denk ich mal *pruhst*)

Sub Layer_kill_entitys_on_deactivated_layers()
    Dim layersum    As String
    Dim layer      As String
    Dim L()        As String
    Dim DOWHAT     as boolean
    Dim objlayer    As AcadLayer
  On Error Resume Next
    Dim entity As AcadEntity
  DOWHAT=false
'build list of deactivated layers
layersum=vblf
    For Each objlayer In ThisDrawing.layers
        If objlayer.LAYERON = False Then
            If InStr(layersum, objlayer.NAME) = 0 Then layersum = layersum & objlayer.NAME & vbLf
  DOWHAT=true
            On Error Resume Next
            objlayer.Freeze = False 'layer must be unlocked to get entitys deleted....
            objlayer.LAYERON = True
            objlayer.Lock = False

            On Error GoTo 0
            Exit Sub
        End If
    Next
if DOWHAT then
    'kill entitys in blockdefinitions on such a layer
    For Each blockdef In ThisDrawing.BLOCKS
        For Each entity In blockdef
              If InStr(layersum, vblf & entity.layer & vblf ) <> 0 Then entity.Delete
        Next
    Next blockdef
 
    'kill left over single entitys on such a layer
    For Each entity In ThisDrawing.modelspace
        If InStr(layersum, layersum, vblf & entity.layer & vblf ) <> 0 Then entity.Delete
    Next
    'same for the paperspace
    For Each entity In ThisDrawing.PaperSpace
        If InStr(layersum, layersum, vblf & entity.layer & vblf ) <> 0 Then entity.Delete
    Next
   
    'kill the layers itselv
    For Each objlayer In ThisDrawing.layers
      If InStr(layersum, layersum, vblf & objlayer.layer & vblf ) <> 0 Then objlayer.Delete
    Next
    end if
    thisdrawing.purgeall
   
End Sub

@Ing Studio Holland - Da Sie ja offenbar Acad Anwendungen ertstellen
mal a dumme frach - warum habt ihr es ned amal eben tapfer geflickt ?
Zu "viel Geschaeft" oder macht Kritisieren mehr Spass um die eigene Kompetenz herauszustellen ?
Und wenn dann bitte qualifiziert  - das die erste version gar nicht funktionieren konnte, weil da ein exit sub
drinstand welche nach erstellen der layerliste das script abbrach ... UUUpps soviel dazu.

------------------
wer es nicht versucht, hat schon verlorn

[Diese Nachricht wurde von rexxitall am 11. Jun. 2013 editiert.]

[Diese Nachricht wurde von rexxitall am 11. Jun. 2013 editiert.]

[Diese Nachricht wurde von rexxitall am 11. Jun. 2013 editiert.]

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

Ingenieur Studio HOLLAUS
Mitglied
CAD / CAFM / GIS Beratung-Programmierung-Schulung


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

Beiträge: 1049
Registriert: 06.11.2008

Autocad 2 bis Autocad 2020 (+Map3D, +Civil3D, +Infraworks)
RKV .... CAFM+mehr
HMap ... Vermessung und Verkehr
OoC .... Raumplanung
CBox ... Tools für AutoCAD und BricsCAD (kostenfrei)

erstellt am: 11. Jun. 2013 20:55    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 Iris2 10 Unities + Antwort hilfreich

Zitat:
@Ing Studio Holland - Da Sie ja offenbar Acad Anwendungen ertstellen
mal a dumme frach - warum habt ihr es ned amal eben tapfer geflickt ?
Zu "viel Geschaeft" oder macht Kritisieren mehr Spass um die eigene Kompetenz herauszustellen ?
Und wenn dann bitte qualifiziert  - das die erste version gar nicht funktionieren konnte, weil da ein exit sub
drinstand welche nach erstellen der layerliste das script abbrach ... UUUpps soviel dazu.

...HOLLAUS mit "AUS" am Ende und nicht "Holland", soviel Zeit muss sein 
...selber geflickt >> ich flicke keine anderen Codes (würde Copyrights verletzen, wenn das nicht im Auftrag und mit schriftlicher Übereinstimmung durchgeführt wird)
...Script abbrach >> das Abbrechen des Ablaufs löscht nicht falsche Daten. Die von mir bemerkte Problemstelle führte aber dazu, dass der Code mehr Daten löscht als der Anwender wollte, aber es vielleicht nicht gleich bemerkt. Und das kann ganz schnell ganz kritisch werden, deswegen meine Warnung.
...oder macht Kritisieren mehr Spass >> das ganze hat keinen Spass gemacht, sollte nur vor ungewollten Datenverlusten schützen.
Und jetzt: auch wenn der letzte Code (im aktuellen Zustand) mit Fehlern abbricht, auch hier passiert den Daten nichts. Und dennoch, es sollte in hilfreicher Hinweis sein, nicht Kritik (zumindest keine destruktive, sollte das wer missverständlicherweise so angenommen haben).

------------------


www.cars4fun.at

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

rexxitall
Mitglied
Dipl. -Ing. Bau


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

Beiträge: 266
Registriert: 07.06.2013

erstellt am: 11. Jun. 2013 21:52    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 Iris2 10 Unities + Antwort hilfreich

Lach
OK Du bist in Ordnung ! Korinthenkacker und Erbsenzaehler hab ich auf Arbeit genug *lach*
(Und reagier da vieleicht mal etwas ueber - und sei gluckelich ich hab noch nicht mal den Massivbauer losgelassen)
*grins*

Nebenebei alle deine Kommentare waren richtig.
Ich wollt nur mal eben helfen - und habs aml in 5 minuten tapfer runtergetippt.
mit dem vblf am anfang und ende funktionierts auf alle faelle.
(Man beachte auch den kommetar von wegen dateien gesichert)

Es ist interessant das die primitiven string funktionen durchaus speed erzeugen.
(und es sind primitive einzeiler).
Bei for each element in thisdrawinge.modelspace dreht mir immer den Magen um - ist aber sauschnell.
ASM codet ? - ich denk so. Cool waer eher SQL select * from drawing where ... (Wunschdenken)
Wie schon mal geschrieben ne einmal fire and forget soloution da iss es sowas von latte wie lang die rennt.
Da ist finetuning einfach unwirtschaftlich.
Klar kann ich die auch auf speed bringen nur wenn einer eh schon froh ist wenn er/sie/es das in den editor bekommt ...
Ich hab die mal testweise auf ein paar unserer Zeichnungen losgelassen - 25% Dateieinsparung ist drin
Und die IDEE von Iris war total cool - auf die Idee bin ich noch nicht gekommen DANKE!
Die "Experdde" haben da oft uralt Urschleim drin wo keiner mehr brauch.


LG aus finnland *Bier rueberschiebs*
Thomas
P.S. WENN das copyrighted is sollt man besser GAR NIX mehr veroeffentlichen - das ist nur eines T R I V I A L
------------------
wer es nicht versucht, hat schon verlorn

[Diese Nachricht wurde von rexxitall am 11. Jun. 2013 editiert.]

[Diese Nachricht wurde von rexxitall am 11. Jun. 2013 editiert.]

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