Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Rund um AutoCAD
  Schnellauswahl Befehle

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:  Schnellauswahl Befehle (934 / mal gelesen)
AlexSe77
Mitglied
Schreinermeister

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

Beiträge: 4
Registriert: 25.06.2021

Autocad 2019

erstellt am: 25. Jun. 2021 06:48    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 vor kurzem festgestellt das wir in unseren Zeichnungen sehr viel nicht sichtbare Objekte liegen haben die die Zeichnungen sehr groß werden lassen. Stellenweise sind das mehrere Hunderttausend pro Zeichnung oft auch in Blöcken verknüpft. Kommen vermutlich von aufgelösten variablen Blöcken.

Es sind zwei Polylinien mit einer Fläche von einmal 108 und einmal 124950. Ich versuche die jetzt alle nach und nach zu löschen muss aber natürlich die Werte in der Schnellauswahl immer neu einstellen. Da ich in fast jeden Block in der Zeichnung gehen muss ist das sehr zeitaufwändig.

Meine Frage wäre nun ob ich einen Befehl auf einen Button legen kann mit dem ich das auf einen klick erledigen kann.

Also: Schnellauswahl starten - Polylinie wählen - Fläche 108 - Polylinie wählen - Fläche 124950 und löschen.

Geht bestimmt, aber leider reichen meine Kenntnisse dazu nicht aus.

Wäre toll wenn mir hier jemand helfen kann.

Vielen Dank schon mal!

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: 25. Jun. 2021 07:21    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 AlexSe77 10 Unities + Antwort hilfreich

Falls sich die Polylinien nicht selbst schneiden, sollte sa kleine Lisp helfen :

(defun C:PL108DELETE(/ BLOCK ITEM A ANZ)
  (vl-load-com)
  (setq ANZ 0)
  (vlax-for BLOCK (vla-get-blocks(vla-get-activedocument(vlax-get-acad-object)))
    (vlax-for ITEM BLOCK
      (if(member(strcase(vla-get-objectname ITEM))'("ACDB2DPOLYLINE""ACDBPOLYLINE"))
        (if(and(not(vl-catch-all-error-p
                     (setq A(vl-catch-all-apply 'vlax-curve-getArea (list ITEM)))
                   )
               )
               (numberp A)
               (or(equal A    108 0.1)
                  (equal A 124950 0.1)
                 
               )
               (not(vl-catch-all-error-p(vl-catch-all-apply 'vla-delete (list ITEM))))
           )
          (setq ANZ (1+ ANZ))
        )
      ) 
    )     
  )
  (prompt (strcat"\n" (itoa ANZ) " Polylinien mit Fläche 108 bzw 124950 gelöscht\n")) 
)

Betrefs Laden und ausführen ... <<KLICK>>

------------------
Also ich finde Unities gut ... und andere sicher auch
---------------------------------------
  - 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

AlexSe77
Mitglied
Schreinermeister

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

Beiträge: 4
Registriert: 25.06.2021

Autocad 2019

erstellt am: 25. Jun. 2021 10:32    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 CADmium,

das ging ja schnell. Vielen Dank schon mal für deine schnelle Hilfe!
Habe das ganze geladen und es funktioniert.

Allerdings löscht es mehr als ich durch die Schnellauswahl auswählen würde. Bin jetzt in einen Block gegangen, habe den Befehl ausgeführt und er löscht mir 29471 Elemente. Es sind aber immer gleich viele von beiden Elementen. 29471 kann ich aber nicht durch 2 Teilen. Wenn ich durch die Schnellauswahl die Teile in dem Block markiere sind es nur 8652. Hast du eine Idee welche Elemente er da noch markiert und löscht?

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: 25. Jun. 2021 10:48    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 AlexSe77 10 Unities + Antwort hilfreich

Gelöscht werden alle 2D- und LW-Polylinien mit Fläche 108 oder 124950 mit einer Abweichung vom 0.1.

Bei sich selbst schneidenen Polylinie klappt das mit der Flächenermittlung nicht ganz .. aber den "Fehler" hab ich jetzt nicht extra abgefangen.. mann kann die PLs statt zu löschen auch Rot färben .. nur so zur Kontrolle 

dazu
(not(vl-catch-all-error-p(vl-catch-all-apply 'vla-delete (list ITEM))))
durch
(not(vl-catch-all-error-p(vl-catch-all-apply 'vla-put-color (list ITEM 1))))
ersetzen


"in einen Block gehen" musst du nicht ... das Tool geht durch die ganze Zeichnungsdatenbank

------------------
Also ich finde Unities gut ... und andere sicher auch
---------------------------------------
  - 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

AlexSe77
Mitglied
Schreinermeister

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

Beiträge: 4
Registriert: 25.06.2021

Autocad 2019

erstellt am: 25. Jun. 2021 10: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

Ok, das löscht dann also auch Elemente die noch als Block den man noch braucht in der Zeichnung sind von dem die nicht sichtbaren Elemente abstammen. Die haben natürlich die gleich Größe. Das ist dann aber zu viel. Ich möchte ja nur die Elemente löschen die nicht sichtbar da sind und nicht in einen Block eingebunden sind den ich noch brauche. Kann man nicht nur den Schnellauswahl Befehl so programmieren das ich folgendes machen kann: Ich gehe in einen Block - rufe den Befehl auf - er markiert mir Polylinien mit Flächen mit 108 und 124950 - ich lösche die Elemente und gehe aus dem Block wieder raus.

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: 25. Jun. 2021 11:20    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 AlexSe77 10 Unities + Antwort hilfreich

(defun C:PL108DELETE(/ B BLOCK ITEM A ANZ)
  (vl-load-com) 
  (if(and(or(setq B(car(entsel "\nBlockreferenz wählen : ")))
            (prompt"\nNix gewählt")
        )
        (or(=(cdr(assoc 0(entget B)))"INSERT")
            (prompt"\nKeine Blockreferenz gewählt")
        )
        (setq B(vlax-ename->vla-object B))
        (setq B(vla-get-name B))
        (not(vl-catch-all-error-p
              (setq BLOCK(vl-catch-all-apply
                            'vla-item
                            (list (vla-get-blocks
                                    (vla-get-activedocument(vlax-get-acad-object))
                                  )
                                  B
                            )
                          )
              )     
            )
        )
    )
    (progn
      (setq ANZ 0)
      (vlax-for ITEM BLOCK
        (if(member(strcase(vla-get-objectname ITEM))'("ACDB2DPOLYLINE""ACDBPOLYLINE"))
          (if(and(not(vl-catch-all-error-p
                      (setq A(vl-catch-all-apply 'vlax-curve-getArea (list ITEM)))
                    )
                )
                (numberp A)
                (or(equal A    108 0.1)
                    (equal A 124950 0.1)                   
                )
                (not(vl-catch-all-error-p(vl-catch-all-apply 'vla-delete (list ITEM))))
            )
            (setq ANZ (1+ ANZ))
          )
        ) 
      )
      (prompt (strcat"\n" (itoa ANZ) " Polylinien mit Fläche 108 bzw 124950 gelöscht\n"))
    ) 
  ) 
)

------------------
Also ich finde Unities gut ... und andere sicher auch
---------------------------------------
  - 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

AlexSe77
Mitglied
Schreinermeister

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

Beiträge: 4
Registriert: 25.06.2021

Autocad 2019

erstellt am: 28. Jun. 2021 10: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

Hallo CADmium,

das funktioniert sehr gut, vielen Dank für deine schnelle Hilfe!

Wie bekomme ich das ganze jetzt noch am besten auf einen Button zum anklicken? Das bekomme ich gerade nicht hin. Der Befehl erscheint zwar in der Befehlszeile wenn ich den Button anklicke aber er sagt unbekannter Befehl. Wenn ich es so eingebe dann geht es.

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

Manuel486
Mitglied
Technischer Zeichner Elektro


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

Beiträge: 194
Registriert: 31.01.2020

erstellt am: 28. Jun. 2021 14:00    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 AlexSe77 10 Unities + Antwort hilfreich

C^C^(LOAD "C:/Users/faust/Desktop/PL108DELETE.lsp");PL108DELETE;

Musst auf deinen Ablagepfad noch anpassen.

[Diese Nachricht wurde von Manuel486 am 28. Jun. 2021 editiert.]

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

xem
Mitglied
Zeichner


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

Beiträge: 847
Registriert: 07.08.2008

Software:
AutoCAD 2022 - 64bit
Windows 10 Pro - 64bit
PDFCreator 1.0.2 - 32bit
Ghostscript 9.0 - 64bit
PDF-XChange Viewer - 64bit
GIMP 2.6.8 - 64bit
MS Office 2013 - 32bit
Opera 12 - 32bit
MacroX - 32bit
7-zip - 64bit
-----------------------
Hardware:
Intel i5 680 3,6GHz @ 4GHz
8GB RAM 1333MHz
nVidia GTX 460 1024MB
Intel SSD 2.5 80GB X25-M
Samsung SyncMaster 245B+
Iiyama ProLite E1900s
Logitech mx518
Logitech G11
Roccat Sense Glacier Blue

erstellt am: 28. Jun. 2021 15: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 AlexSe77 10 Unities + Antwort hilfreich

Hallo,

ich nutze folgende LISP um (alle) unsichtbare Objekte zu löschen.

Code:

(defun c:Delinv ( / as)  ; lokale Variable
;unsichtbare Objekte löschen
(setq as (ssget "_X" (list'(60 . 1))))
(if as(command "_erase" as ""))
(setq as nil)  ; as wird freigeben
(princ)
)

Code:

(defun c:Delinvb (/ acdoc ss i sset nme Blockdefinition)
;unsichtbare Objekte in Blöcken löschen
  (vl-load-com)
  (setq acdoc (vla-get-activedocument
                (vlax-get-acad-object)
              )
  )
  (if (setq ss (ssget "_:L" '((0 . "INSERT"))))
    (repeat
      (setq i (sslength ss))
      (setq sset (ssname ss (setq i (1- i))))
      (setq nme (cdr (assoc 2 (entget sset))))
      (setq Blockdefinition (vla-item (vla-get-blocks acdoc) nme))
      (if
        (and
          (eq :vlax-false (vla-get-isxref Blockdefinition))
          (eq :vlax-false (vla-get-islayout Blockdefinition))
        )
          (vlax-for x Blockdefinition
      (if(=(vla-get-Visible  x) :vlax-false)
        (vla-delete x)
    )
)
      )
    )
    (princ)
  )
  (vla-regen acdoc acAllViewports)
  (princ)
)

------------------
Error in Layer 8

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