| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY WIRD VON NVIDIA ZUM HÄNDLER DES JAHRES GEWÄHLT, eine Pressemitteilung
|
Autor
|
Thema: ssget-Filter auf Auswahlsatz (1349 mal gelesen)
|
Geos Mitglied Vermessungstechniker i.R.
Beiträge: 1017 Registriert: 21.09.2001 ACAD Map 2010, Win 7 Pro eigene Lisp's<P>HW: Core i7 860, 2.8 GHz 3.3 GB, NVIDIA GeForce GTS 250
|
erstellt am: 05. Apr. 2008 11:00 <-- editieren / zitieren --> Unities abgeben:
Servus Ich habe Auswahlsatz 1 (AWS1) - beispielsweise wurden manuell Objekte in einem bestimmten Zeichnungsbereich gewählt:
Code: (setq AWS1 (ssget))
Nun möchte ich aus diesem AWS1 weitere AWS filtern. Beim ersten Mal noch kein Problem:
Code: (setq AWS2 (ssget "_P" '((0 . "LINE"))))
das funkt aber beim nächsten Mal nicht mehr - bei:
Code: (setq AWS3 (ssget "_P" '((0 . "TEXT"))))
wäre der vorige AWS ja AWS2 - die Linien.Nun könnte man die Elemente im AWS1 auf ihre Eigenschaften prüfen, aber - gibt's eine Möglichkeit, einen ssget-Filter öfter als einmal auf einen bereits vorhandenen Auswahlsatz anzuwenden.
------------------ Schöne Grüße Ernst www.geopaint.at Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Claudio Mitglied Architekt
Beiträge: 334 Registriert: 13.04.2002
|
erstellt am: 05. Apr. 2008 19:01 <-- editieren / zitieren --> Unities abgeben: Nur für Geos
Hallo Ernst! Wenn Du das so machen willst, dann nimm z.b. SSSETFIRST zuhilfe und aktiviere damit einen vorherigen Auswahlsatz (AWS1 oder AWS2,..) von dem Du dann mit SSGET einen neuen Auswahlsatz erstellst. Beispiel: (hier sollte dann natürlich AWS1 Linien und Texte enthalten...) (defun c:AWX() (setq AWS1 (ssget)) (sssetfirst nil AWS1) (setq AWS2 (ssget '((0 . "LINE")))) (sssetfirst nil AWS1) (setq AWS3 (ssget '((0 . "TEXT")))) ) Gruß Claudio
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Geos Mitglied Vermessungstechniker i.R.
Beiträge: 1017 Registriert: 21.09.2001 ACAD Map 2010, Win 7 Pro eigene Lisp's<P>HW: Core i7 860, 2.8 GHz 3.3 GB, NVIDIA GeForce GTS 250
|
erstellt am: 05. Apr. 2008 19:33 <-- editieren / zitieren --> Unities abgeben:
|
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 05. Apr. 2008 20:27 <-- editieren / zitieren --> Unities abgeben: Nur für Geos
@geos " sssetfirst is mir bisher offensichtlich durch die Lappen gegangen" ... versteh ich nicht ganz... Hast mir doch beim Thema "Befehl fortsetzen" erst den richtigen Tip gegeben... ... nach sssetfirst nochmal ssget... ... aber so ist das... Mfg Heiko Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Geos Mitglied Vermessungstechniker i.R.
Beiträge: 1017 Registriert: 21.09.2001 ACAD Map 2010, Win 7 Pro eigene Lisp's<P>HW: Core i7 860, 2.8 GHz 3.3 GB, NVIDIA GeForce GTS 250
|
erstellt am: 06. Apr. 2008 19:05 <-- editieren / zitieren --> Unities abgeben:
Hi Heiko Na ja, ich hab gesagt, ...AWS wieder aktuell machen... ohne lang darüber nachzudenken, wie. (z.B. hab ich mal - vor Jahren - einen AWS von (0,0) nach (0,0) gemovt ) Und auf meiner Festplatte (Gehirn) war wohl nicht genug Platz um Deine Frage abzuspeichern und damit mit meiner Frage in Verbindung zu bringen . Und wenn'st dich dann bei der Suche auf "ssget" und "Auswahl" konzentrierst ... So, nun muss ich nachdenken, ob mir noch mehr Rechtfertigungen einfallen ... - aber ich glaub' es reicht. ------------------ Schöne Grüße Ernst www.geopaint.at Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
archtools Mitglied
Beiträge: 965 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 06. Apr. 2008 21:00 <-- editieren / zitieren --> Unities abgeben: Nur für Geos
Zitat: Original erstellt von Geos: ServusIch habe Auswahlsatz 1 (AWS1) - beispielsweise wurden manuell Objekte in einem bestimmten Zeichnungsbereich gewählt:
Code: (setq AWS1 (ssget))
Nun möchte ich aus diesem AWS1 weitere AWS filtern. Beim ersten Mal noch kein Problem:
Code: (setq AWS2 (ssget "_P" '((0 . "LINE"))))
das funkt aber beim nächsten Mal nicht mehr - bei:
Code: (setq AWS3 (ssget "_P" '((0 . "TEXT"))))
wäre der vorige AWS ja AWS2 - die Linien.Nun könnte man die Elemente im AWS1 auf ihre Eigenschaften prüfen, aber - gibt's eine Möglichkeit, einen ssget-Filter öfter als einmal auf einen bereits vorhandenen Auswahlsatz anzuwenden.
Mach' das doch ordentlich so, wie man das in Lisp macht: mit Listen.
Schreib Dir eine Funktion, die einen Auswahlsatz in eine Liste von Entities umwandelt. Auf diese Liste kannst Du (mapcar 'entget ...) anwenden, um eine Liste der DXF-Listen zu bekommen, und dort kannst Du nach Belieben nach Entity-Typus, Layer, Einfügepunkte oder was auch immer sortieren oder filtern. Tom Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Geos Mitglied Vermessungstechniker i.R.
Beiträge: 1017 Registriert: 21.09.2001 ACAD Map 2010, Win 7 Pro eigene Lisp's<P>HW: Core i7 860, 2.8 GHz 3.3 GB, NVIDIA GeForce GTS 250
|
erstellt am: 07. Apr. 2008 20:08 <-- editieren / zitieren --> Unities abgeben:
Hi Tom Zitat: ...die Elemente im AWS1 auf ihre Eigenschaften prüfen...
Damit hab ich eigentlich in diese Richtung gedacht... Aber (mapcar 'entget ...), filtern, sortieren - das hat mich wieder auf eine Idee gebracht ... geht so ungefähr in die Richtung Zeichungsanalyse (...enthält 20 Linien, davon 4 auf Layer yyyy, davon 2 auf Farbe xxx, ...). Danke Dir ------------------ Schöne Grüße Ernst www.geopaint.at Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |