| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: ssget, wiedermal filtern: Elemente ohne GC48 (1365 mal gelesen)
|
Wolfgang S Mitglied CADaver
Beiträge: 270 Registriert: 06.03.2006 AC 2009, C3D 2009, AC 2010, C3D 2010, AC 2011, C3D 2011, RVT 2010, RVT 2011, ASD 2011 und alles darunter bis R14 + Win XP, Win XP64, Win 7/64
|
erstellt am: 13. Jun. 2007 10:02 <-- editieren / zitieren --> Unities abgeben:
Hossa! muss wieder mal wegen ssget nerven: ich möchte alle Elemente selektieren, die keinen CELTSCALE haben, somit ohne GC48 (soweit ich´s verstanden hab) meine Versuche sind bislang gescheitert an "bad SSGET list value" hier meine Ansätze: (ssget "X" '(-4 . "<NOT") (48 . "*") (-4 . "NOT>") )) als Kompromiss hab ich versucht: (ssget "X" '((-4 . "<and") (0 . "*") (-4 . "<NOT") (48 . "*") (-4 . "NOT>") (-4 . "and>") )) das wollt auch nicht: (ssget "X" '((-4 . "*")(48 . 0))) mit > oder < 0 kann ich auch nix anfangen, weil ich nur die ohne GC48 will, die anderen werden extra selektiert (bis zu 7 Auswahlsätze) bitte um Hülfe! Wolfgang S Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4171 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 13. Jun. 2007 10:30 <-- editieren / zitieren --> Unities abgeben: Nur für Wolfgang S
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 .
|
erstellt am: 13. Jun. 2007 10:42 <-- editieren / zitieren --> Unities abgeben: Nur für Wolfgang S
oder probier mal (sssetfirst (setq a(ssget "X" '((-4 . "<NOT")(-4 . "<>")(48 . 1)(-4 . "NOT>"))))a) ------------------ - 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 |
Wolfgang S Mitglied CADaver
Beiträge: 270 Registriert: 06.03.2006 AC 2009, C3D 2009, AC 2010, C3D 2010, AC 2011, C3D 2011, RVT 2010, RVT 2011, ASD 2011 und alles darunter bis R14 + Win XP, Win XP64, Win 7/64
|
erstellt am: 13. Jun. 2007 10:48 <-- editieren / zitieren --> Unities abgeben:
|
wronzky Ehrenmitglied V.I.P. h.c. CAD-Dienstleistungen für Architekten
Beiträge: 2154 Registriert: 02.05.2005 CAD: AutoCAD 2.6 bis 2014 ADT 2005 - 2014 Arcibem System: Windows 2000, XP, NO VISTA Internet-Startseite: http://www.archi.de
|
erstellt am: 13. Jun. 2007 11:13 <-- editieren / zitieren --> Unities abgeben: Nur für Wolfgang S
Zitat: Original erstellt von CADmium: oder probier mal (sssetfirst (setq a(ssget "X" '((-4 . "<NOT")(-4 . "<>")(48 . 1)(-4 . "NOT>"))))a)
wäre ggf. NICHT UNGLEICH nicht einfacher mit GLEICH zu erreichen? (sssetfirst (setq a(ssget "X" '((48 . 1)))a) Grüsse, Henning ------------------ VoxelManufaktur Computer-Dienstleistungen für Architekten und Ingenieure http://www.voxelman.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Wolfgang S Mitglied CADaver
Beiträge: 270 Registriert: 06.03.2006 AC 2009, C3D 2009, AC 2010, C3D 2010, AC 2011, C3D 2011, RVT 2010, RVT 2011, ASD 2011 und alles darunter bis R14 + Win XP, Win XP64, Win 7/64
|
erstellt am: 13. Jun. 2007 11:18 <-- editieren / zitieren --> Unities abgeben:
Zitat: (ssget "X" '((48 . 1)))
interessant, Lisp filtert nach GC48, den es in den Elementen gar nicht gibt, weil ja nicht persistent... z.B.
Code: ((-1 . <Entity name: 7ef71310>) (0 . "LINE") (330 . <Entity name: 7efaccf8>) (5 . "152") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . "AcDbLine") (10 431.405 1789.53 0.0) (11 1079.28 1195.39 0.0) (210 0.0 0.0 1.0))
wird trotzdem ausgewählt, seltsam ????
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wronzky Ehrenmitglied V.I.P. h.c. CAD-Dienstleistungen für Architekten
Beiträge: 2154 Registriert: 02.05.2005 CAD: AutoCAD 2.6 bis 2014 ADT 2005 - 2014 Arcibem System: Windows 2000, XP, NO VISTA Internet-Startseite: http://www.archi.de
|
erstellt am: 13. Jun. 2007 11:33 <-- editieren / zitieren --> Unities abgeben: Nur für Wolfgang S
Zitat: Original erstellt von Wolfgang S:
wird trotzdem ausgewählt, seltsam ????
...hmmm in der Tat seltsam, denn in der Doku steht: Zitat: Note The meaning of certain group codes can differ from entity to entity, and not all group codes are present in all entities. If a particular group code is specified in a filter, entities not containing that group code are excluded from the selection set that ssget returns.
Vielleicht, weil der VORGABEWERT 1 ist und GC48 "theoretisch" existieren könnte? in den Eigenschaften einer Linie ohne GC48 steht auch 1! Grüsse, Henning ------------------ VoxelManufaktur Computer-Dienstleistungen für Architekten und Ingenieure http://www.voxelman.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mkl-cad Mitglied Technischer Zeichner
Beiträge: 378 Registriert: 23.07.2003 ACAD 2002 Express Tools 1-9 Architektural Desktop Windows XP Server Windows 2003 3 GHz Rechner 1 GB RAM 80 GB Festplatte ATI FireGL V3100 2 17" Flachbildschirme
|
erstellt am: 13. Jun. 2007 13:19 <-- editieren / zitieren --> Unities abgeben: Nur für Wolfgang S
Hallo, ist doch irgendwo logisch oder? Wenn ein Element den Wert nicht hat nimmt ACAD doch den Linienfaktor 1 an. Also ist der Code 48 auch 1 wenn er nicht da ist. Woher sollte sonst der Wert kommen? Fragt sich nur warum ACAD so faul ist und den Code des Objektes nicht anzeigt wenn er auf 1 steht. ------------------ Martin Viele Grüße aus dem schönen Münsterland! [Diese Nachricht wurde von mkl-cad am 13. Jun. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 .
|
erstellt am: 13. Jun. 2007 13:22 <-- editieren / zitieren --> Unities abgeben: Nur für Wolfgang S
logisch schon, aber ssget muß nicht so arbeiten .. es kann auch ganz profan bloß vergleichen... ------------------ - 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 |
wronzky Ehrenmitglied V.I.P. h.c. CAD-Dienstleistungen für Architekten
Beiträge: 2154 Registriert: 02.05.2005 CAD: AutoCAD 2.6 bis 2014 ADT 2005 - 2014 Arcibem System: Windows 2000, XP, NO VISTA Internet-Startseite: http://www.archi.de
|
erstellt am: 13. Jun. 2007 13:43 <-- editieren / zitieren --> Unities abgeben: Nur für Wolfgang S
Zitat: Original erstellt von mkl-cad: Also ist der Code 48 auch 1 wenn er nicht da ist.
Also logisch finde ich es nicht wenn ein Code, der nicht da ist, einen Wert haben soll. Und warum liefert dann (cdr (assoc 48 (entget (car (entsel))))) nil??? Ausserdem soll ssget elemente ausschliessen, wenn der Code fehlt. ne,ne,ne LOGISCH ist für mich was anderes! Grüsse, Henning
------------------ VoxelManufaktur Computer-Dienstleistungen für Architekten und Ingenieure http://www.voxelman.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Wolfgang S Mitglied CADaver
Beiträge: 270 Registriert: 06.03.2006 AC 2009, C3D 2009, AC 2010, C3D 2010, AC 2011, C3D 2011, RVT 2010, RVT 2011, ASD 2011 und alles darunter bis R14 + Win XP, Win XP64, Win 7/64
|
erstellt am: 13. Jun. 2007 13:47 <-- editieren / zitieren --> Unities abgeben:
Zitat: Ausserdem soll ssget elemente ausschliessen, wenn der Code fehlt.
genau, mein ich auch. deswegen bin ich erst damit ins Forum gekommen. demnach sollte ssget auch bei (66 . 1) alle Blöcke selektieren, weil wenn´s nicht existiert nimmt lisp an, daß es 1 ist ?!?! nee, so einfach kann´s nicht sein. lg Wolfgang
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wronzky Ehrenmitglied V.I.P. h.c. CAD-Dienstleistungen für Architekten
Beiträge: 2154 Registriert: 02.05.2005 CAD: AutoCAD 2.6 bis 2014 ADT 2005 - 2014 Arcibem System: Windows 2000, XP, NO VISTA Internet-Startseite: http://www.archi.de
|
erstellt am: 13. Jun. 2007 14:19 <-- editieren / zitieren --> Unities abgeben: Nur für Wolfgang S
Zitat: Original erstellt von Wolfgang S: weil wenn´s nicht existiert nimmt lisp an, daß es 1 ist ?
nicht 1 sonder 0 (=Vorgabewert), und siehe da, es stimmt. (ssget "x" '((66 . 0))) filtert alle Blöcke ohne Attribute, obwohl GC66 nicht existent. Resümee: Existiert für ein Element ein GC-Wert, ist er aber nicht gesetzt, und existiert statt dessen ein möglicher Vorgabewert, filtert ssget den Vorgabewert! ---- würde ich jetzt so interpretieren. Grüsse, Henning
------------------ VoxelManufaktur Computer-Dienstleistungen für Architekten und Ingenieure http://www.voxelman.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |