| |
![](https://ww3.cad.de/php/image.php?resolution=width:20050) | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
![](https://ww3.cad.de/php/image.php?resolution=width:16196) | PNY WIRD VON NVIDIA ZUM HÄNDLER DES JAHRES GEWÄHLT, eine Pressemitteilung
|
Autor
|
Thema: nach Blocksichtbarkeit filtern (2947 mal gelesen)
|
Steff179 Mitglied Geomatiker
![](/foren/ubb/star3.gif) ![](/foren/ubb/star3.gif)
![Schreiben Sie einen Gästebucheintrag für Steff179](/foren/ubb/pmimages/gbu.gif) Beiträge: 266 Registriert: 09.08.2007 AutoCAD 2014
|
erstellt am: 06. Mai. 2011 11:48 <-- editieren / zitieren --> Unities abgeben: ![1 Unity (wenig hilfreich, aber dennoch)](/foren/ubb/z1.gif) ![2 Unities](/foren/ubb/z2.gif) ![3 Unities](/foren/ubb/z3.gif) ![4 Unities](/foren/ubb/z4.gif) ![5 Unities](/foren/ubb/z5.gif) ![6 Unities](/foren/ubb/z6.gif) ![7 Unities](/foren/ubb/z7.gif) ![8 Unities](/foren/ubb/z8.gif) ![9 Unities](/foren/ubb/z9.gif)
Hallo zusammen Ich habe mich ja mit dem Sichtbarkeitsstatus von Blöcken herumgeplagt. Das ist dabei herausgekommen. Ich hoffe es ist leserlich und das ich keine bösen Fehler eingebaut habe. Gruss Steff Code:
(defun c:FILTER-SICHTBARKEIT ( / Blocksichtbarkeit Kill-Doppelte ss i sss auswahllist a auswahl) ; Gibt also Ergebniss nil oder den Sichtbarkeitsparameter zurück ; ent = Elementname (defun Blocksichtbarkeit ( ent / i sarray sarray-ele Ergebniss) (if (and (= (cdr (assoc 0 (entget ent))) "INSERT") (vla-get-IsDynamicBlock (vlax-ename->vla-object ent)) ) (progn (setq sarray (vlax-variant-value (vla-getdynamicblockproperties(vlax-ename->vla-object ent))) ) (setq i (vlax-safearray-get-l-bound sarray 1)) (while (<= i (vlax-safearray-get-u-bound sarray 1)) (setq sarray-ele (vlax-safearray-get-element sarray i)) (if (= (vla-get-PropertyName sarray-ele) "Sichtbarkeit") (setq ergebniss (vlax-variant-value (vla-get-value sarray-ele))) );end if (setq i (1+ i)) );end while );end progn );end if ergebniss );end defun ; löscht doppelte Listenelemente und gibt die Liste sortiert zurück ; Liste = einfache Liste bsp. (1 2 3 4 5) ("A" "B" "C") (defun Kill-Doppelte (Liste / NeueListe) (foreach x Liste (if (not(member x NeueListe)) (setq NeueListe (cons x NeueListe)) ) ) (vl-sort (reverse NeueListe) (function (lambda (e1 e2)(< e1 e2)))) );end defun
(setq ss (ssget '((0 . "Insert"))) i 0 sss (ssadd) ) ;Erstellt eine Auswahlliste mit allen Sichtbarkeitsstatus (if ss (repeat (sslength ss) (if (Blocksichtbarkeit (ssname ss i)) (setq Auswahllist (cons (Blocksichtbarkeit (ssname ss i)) Auswahllist)) );end if (setq i (1+ i)) );end repeat (setq Auswahllist (Kill-Doppelte Auswahllist)) );end if ;---------------------------------------- (if (And Auswahllist ss) (progn ;Erstellt einen Filterstring für initget (setq a "" i 1) (repeat (length auswahllist) (setq a (strcat (itoa i) " " a)) (setq i (1+ i)) ) ;---------------------------------------- ;Fordert zur auswahl des zu Filternden Sichtbarkeitsstatus auf (setq i 1) (foreach x Auswahllist (princ (strcat "\n" (itoa i) ". " x))(setq i (1+ i))) (initget 1 a) (setq auswahl (getkword "\nBitte die Auswahl (Position) eingeben: ")) ;---------------------------------------- ;Filtert alle im Auswahlset enthaltenen Objekte mit dem ;Ausgewählten Sichtbarkeitsstatus (setq i 0) (repeat (sslength ss) (setq ent (ssname ss i)) (if (= (Blocksichtbarkeit ent) (nth (- (atoi auswahl) 1) Auswahllist)) (setq sss (ssadd ent sss)) );end if (setq i (1+ i)) );end repeat (sssetfirst sss sss) ;----------------------------------------
);end progn (princ "\nKeine Blöcke mit Sichtbarkeitsparameter gefunden!") );end if (princ) );end defun
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andreas Kraus Mitglied Elektrotechniker
![](/foren/ubb/star3.gif) ![](/foren/ubb/star3.gif) ![](/foren/ubb/star3.gif) ![](/foren/ubb/star3.gif)
![Schreiben Sie einen Gästebucheintrag für Andreas Kraus](/foren/ubb/pmimages/gbu.gif) Beiträge: 1451 Registriert: 11.01.2006 WIN 10 ACAD 2022 BricsCAD V23
|
erstellt am: 06. Mai. 2011 16:56 <-- editieren / zitieren --> Unities abgeben: ![1 Unity (wenig hilfreich, aber dennoch)](/foren/ubb/z1.gif) ![2 Unities](/foren/ubb/z2.gif) ![3 Unities](/foren/ubb/z3.gif) ![4 Unities](/foren/ubb/z4.gif) ![5 Unities](/foren/ubb/z5.gif) ![6 Unities](/foren/ubb/z6.gif) ![7 Unities](/foren/ubb/z7.gif) ![8 Unities](/foren/ubb/z8.gif) ![9 Unities](/foren/ubb/z9.gif) Nur für Steff179
Ich würde die Auswahlliste "bereinigen" also doppelte rausschmeißen. Stell dir mal vor jemand wählt 2000 Objekte und nur zwei haben eine andere Sichtbarkeit ![](/foren/ubb/eek.gif) . Die Idee find ich aber gut. Ich hab ja auch schon eine Filterfunktion gebaut http://ww3.cad.de/foren/ubb/Forum54/HTML/015389.shtml#000038 die greift aber nur auf die Daten eines Objektes zu um den Filter zu erstellen. Aber eine "Schnellauswahl" mit Attributinhalten, EEDs, Parameterwerten,... das macht sicher Spass. Ich glaub da meldet sich der Basteltrieb bei mir Schönes Wochenende ------------------ Geht nicht, gibts nicht Gruß Andreas http://kraus-cad.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Steff179 Mitglied Geomatiker
![](/foren/ubb/star3.gif) ![](/foren/ubb/star3.gif)
![Schreiben Sie einen Gästebucheintrag für Steff179](/foren/ubb/pmimages/gbu.gif) Beiträge: 266 Registriert: 09.08.2007 AutoCAD 2014
|
erstellt am: 09. Mai. 2011 15:38 <-- editieren / zitieren --> Unities abgeben: ![1 Unity (wenig hilfreich, aber dennoch)](/foren/ubb/z1.gif) ![2 Unities](/foren/ubb/z2.gif) ![3 Unities](/foren/ubb/z3.gif) ![4 Unities](/foren/ubb/z4.gif) ![5 Unities](/foren/ubb/z5.gif) ![6 Unities](/foren/ubb/z6.gif) ![7 Unities](/foren/ubb/z7.gif) ![8 Unities](/foren/ubb/z8.gif) ![9 Unities](/foren/ubb/z9.gif)
Hallo Andreas UUUUPPPPSSSS Sollte natürlich schon nicht so sein das die Auswahl so lang ist ![](/foren/ubb/biggrin.gif) Hab irgendwie ein "progn" rauseditiert :s Darum hats die Zeile "(setq Auswahllist (Kill-Doppelte Auswahllist))" übersprungen. Danke für die Anmerkung. Gruss Steff Code:
(defun c:FILTER-SICHTBARKEIT ( / Blocksichtbarkeit Kill-Doppelte ss i sss auswahllist a auswahl) ; Gibt also Ergebniss nil oder den Sichtbarkeitsparameter zurück ; ent = Elementname (defun Blocksichtbarkeit ( ent / i sarray sarray-ele Ergebniss) (if (and (= (cdr (assoc 0 (entget ent))) "INSERT") (vla-get-IsDynamicBlock (vlax-ename->vla-object ent)) ) (progn (setq sarray (vlax-variant-value (vla-getdynamicblockproperties(vlax-ename->vla-object ent))) ) (setq i (vlax-safearray-get-l-bound sarray 1)) (while (<= i (vlax-safearray-get-u-bound sarray 1)) (setq sarray-ele (vlax-safearray-get-element sarray i)) (if (= (vla-get-PropertyName sarray-ele) "Sichtbarkeit") (setq ergebniss (vlax-variant-value (vla-get-value sarray-ele))) );end if (setq i (1+ i)) );end while );end progn );end if ergebniss );end defun ; löscht doppelte Listenelemente und gibt die Liste sortiert zurück ; Liste = einfache Liste bsp. (1 2 3 4 5) ("A" "B" "C") (defun Kill-Doppelte (Liste / NeueListe) (foreach x Liste (if (not(member x NeueListe)) (setq NeueListe (cons x NeueListe)) ) ) (vl-sort (reverse NeueListe) (function (lambda (e1 e2)(< e1 e2)))) );end defun
(setq ss (ssget '((0 . "Insert"))) i 0 sss (ssadd) ) ;Erstellt eine Auswahlliste mit allen Sichtbarkeitsstatus (if ss (progn (repeat (sslength ss) (if (Blocksichtbarkeit (ssname ss i)) (setq Auswahllist (cons (Blocksichtbarkeit (ssname ss i)) Auswahllist)) );end if (setq i (1+ i)) );end repeat (setq Auswahllist (Kill-Doppelte Auswahllist)) );end progn );end if ;---------------------------------------- (if (And Auswahllist ss) (progn ;Erstellt einen Filterstring für initget (setq a "" i 1) (repeat (length auswahllist) (setq a (strcat (itoa i) " " a)) (setq i (1+ i)) ) ;---------------------------------------- ;Fordert zur auswahl des zu Filternden Sichtbarkeitsstatus auf (setq i 1) (foreach x Auswahllist (princ (strcat "\n" (itoa i) ". " x))(setq i (1+ i))) (initget 1 a) (setq auswahl (getkword "\nBitte die Auswahl (Position) eingeben: ")) ;---------------------------------------- ;Filtert alle im Auswahlset enthaltenen Objekte mit dem ;Ausgewählten Sichtbarkeitsstatus (setq i 0) (repeat (sslength ss) (setq ent (ssname ss i)) (if (= (Blocksichtbarkeit ent) (nth (- (atoi auswahl) 1) Auswahllist)) (setq sss (ssadd ent sss)) );end if (setq i (1+ i)) );end repeat (sssetfirst sss sss) ;----------------------------------------
);end progn (princ "\nKeine Blöcke mit Sichtbarkeitsparameter gefunden!") );end if (princ) );end defun
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Britt Mitglied
![](/foren/ubb/star3.gif) ![](/foren/ubb/star3.gif)
![Schreiben Sie einen Gästebucheintrag für Britt](/foren/ubb/pmimages/gbu.gif) Beiträge: 154 Registriert: 21.03.2002
|
erstellt am: 12. Jan. 2012 11:17 <-- editieren / zitieren --> Unities abgeben: ![1 Unity (wenig hilfreich, aber dennoch)](/foren/ubb/z1.gif) ![2 Unities](/foren/ubb/z2.gif) ![3 Unities](/foren/ubb/z3.gif) ![4 Unities](/foren/ubb/z4.gif) ![5 Unities](/foren/ubb/z5.gif) ![6 Unities](/foren/ubb/z6.gif) ![7 Unities](/foren/ubb/z7.gif) ![8 Unities](/foren/ubb/z8.gif) ![9 Unities](/foren/ubb/z9.gif) Nur für Steff179
|
Balrok Mitglied Technischer Zeichner
![](/foren/ubb/star3.gif) ![](/foren/ubb/star3.gif)
![Schreiben Sie einen Gästebucheintrag für Balrok](/foren/ubb/pmimages/gbu.gif) Beiträge: 434 Registriert: 02.06.2005 Win10, 64Bit AutoCad 2023 AutoCad Architectur 2023 LiNear 2019 EPLAN P8 2022
|
erstellt am: 27. Apr. 2016 10:32 <-- editieren / zitieren --> Unities abgeben: ![1 Unity (wenig hilfreich, aber dennoch)](/foren/ubb/z1.gif) ![2 Unities](/foren/ubb/z2.gif) ![3 Unities](/foren/ubb/z3.gif) ![4 Unities](/foren/ubb/z4.gif) ![5 Unities](/foren/ubb/z5.gif) ![6 Unities](/foren/ubb/z6.gif) ![7 Unities](/foren/ubb/z7.gif) ![8 Unities](/foren/ubb/z8.gif) ![9 Unities](/foren/ubb/z9.gif) Nur für Steff179
Hallo, ich möchte das Thema nochmal aufgreifen. Bei mir gibt es die Meldung nach der Auswahl des Blockes "Keine Blöcke mit Sichtbarkeitsparameter gefunden!", obwohl die Blöcke definitiv Sichtbarkeitsparameter haben. Was mache ich falsch??? Grüße Balrok Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
![](/foren/ubb/Admin1.gif) ![](/foren/ubb/Admin2.gif) ![](/foren/ubb/Admin3.gif) ![](/foren/ubb/Admin4.gif) ![](/foren/ubb/Admin5.gif) ![](/foren/ubb/Admin1.gif) ![](/foren/ubb/Admin2.gif) ![](/foren/ubb/Admin3.gif)
![](/foren/avatars/cadffm.gif)
![Schreiben Sie einen Gästebucheintrag für cadffm](/foren/ubb/pmimages/gbu.gif) Beiträge: 22171 Registriert: 03.06.2002 Alles
|
erstellt am: 27. Apr. 2016 11:20 <-- editieren / zitieren --> Unities abgeben: ![1 Unity (wenig hilfreich, aber dennoch)](/foren/ubb/z1.gif) ![2 Unities](/foren/ubb/z2.gif) ![3 Unities](/foren/ubb/z3.gif) ![4 Unities](/foren/ubb/z4.gif) ![5 Unities](/foren/ubb/z5.gif) ![6 Unities](/foren/ubb/z6.gif) ![7 Unities](/foren/ubb/z7.gif) ![8 Unities](/foren/ubb/z8.gif) ![9 Unities](/foren/ubb/z9.gif) Nur für Steff179
Der Code ist an dieser Stelle leider wenig allgemeingültig gehalten und geht von einem Parameternamen "Sichtbarkeit" aus, anstatt zu ermitteln wie DEIN Sichtbarkeitsparameter benannt ist. Nur zum testen, aber nicht zwingend als Lösung zu empfehlen: Ändere im Code mal "Sichtbarkeit" auf "wohersollenwirwissenwiedudeineParameterbenennst", lade den Code neu und teste.. Wobei "wohersollenwirwissenwiedudeineParameterbenennst" vermutlich "Sichtbarkeit1" sein wird in deinem Fall. ------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Balrok Mitglied Technischer Zeichner
![](/foren/ubb/star3.gif) ![](/foren/ubb/star3.gif)
![Schreiben Sie einen Gästebucheintrag für Balrok](/foren/ubb/pmimages/gbu.gif) Beiträge: 434 Registriert: 02.06.2005
|
erstellt am: 27. Apr. 2016 11:32 <-- editieren / zitieren --> Unities abgeben: ![1 Unity (wenig hilfreich, aber dennoch)](/foren/ubb/z1.gif) ![2 Unities](/foren/ubb/z2.gif) ![3 Unities](/foren/ubb/z3.gif) ![4 Unities](/foren/ubb/z4.gif) ![5 Unities](/foren/ubb/z5.gif) ![6 Unities](/foren/ubb/z6.gif) ![7 Unities](/foren/ubb/z7.gif) ![8 Unities](/foren/ubb/z8.gif) ![9 Unities](/foren/ubb/z9.gif) Nur für Steff179
|
Bernd P Ehrenmitglied V.I.P. h.c. cook-general
![](/foren/avatars/Bernd_P.gif)
![Schreiben Sie einen Gästebucheintrag für Bernd P](/foren/ubb/pmimages/gbu.gif) Beiträge: 3420 Registriert: 07.06.2001 W10-64bit, AMD Ryzen 7 3700X,32GB RAM, Sapphire Pulse Radeon RX 570 8G G5, Canon TX-3000 MFP, Maus Cherry MW4500, Sub:Infrastructure Design Suite, Office 365
|
erstellt am: 28. Apr. 2016 09:15 <-- editieren / zitieren --> Unities abgeben: ![1 Unity (wenig hilfreich, aber dennoch)](/foren/ubb/z1.gif) ![2 Unities](/foren/ubb/z2.gif) ![3 Unities](/foren/ubb/z3.gif) ![4 Unities](/foren/ubb/z4.gif) ![5 Unities](/foren/ubb/z5.gif) ![6 Unities](/foren/ubb/z6.gif) ![7 Unities](/foren/ubb/z7.gif) ![8 Unities](/foren/ubb/z8.gif) ![9 Unities](/foren/ubb/z9.gif) Nur für Steff179
Servus, einfach das "Sichtbarkeit" auf den Standard "Sichtbarkeit1" ändern..... (schreib das auch nie um) ------------------ <----- Bitte Systeminfo eintragen, warum siehst du hier. Wünsche: Tabllen (XLS,ODS) FDO nativ einbinden, FDO-WMTS, richtige Ebenen für Layer, Erweiterter Attribut-Editor "auffrischen", dyn. Xrefs, mehrere modell Bereiche, Halo4Texte, verschränkte Attribute, Linientypen überarbeiten (doppellinien) , XREF>VISRETAIN pro XREF Fehler: FDORasterdaten im Layout Richtigen Maßstab verwenden, funktionierende updates u. erweiterungen inkl. installationsroutinen, Fehler zwischen Normal MAP Civil beheben Schöne Grüsse aus der Steiermark Bernd P. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |