| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| Request a special discount on NVIDIA RTX 5000 Ada Generation GPU !, eine Pressemitteilung
|
Autor
|
Thema: Auswahlsatz Attribute (2294 mal gelesen)
|
sponk-mg Mitglied
Beiträge: 38 Registriert: 10.10.2011
|
erstellt am: 28. Okt. 2011 16:12 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich hab wieder ein Problem mit Auswahlsätzen. Diesmal mit Attributen bei Blöcken. Die Bezeichnung des Attributes ist stets VZ Der Wert ist variabel VZ * (ssget "_X" '((0 . "attrib")(2 . "VZ")(1 . "VZ *"))) Ausgabe nil. (ssget "_X" '((0 . "*attrib")(2 . "VZ")(1 . "VZ *"))) Ausgabe nil. (ssget "_X" '((0 . "attdef")(2 . "VZ")(1 . "VZ *"))) Ausgabe nil. (ssget "_X" '((0 . "*attdef")(2 . "VZ")(1 . "VZ *"))) Ausgabe nil. Hab bereits Verschiedenes ausprobiert. Blockauswahl mit Attributen, nur Attribute. Attribute selektiert nur nach Bezeichnung oder Werten. Ausgabe ist immer nil. "Hilfe". Ist sicher wieder nur ein kleines Detail. Martin
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 28. Okt. 2011 16:28 <-- editieren / zitieren --> Unities abgeben: Nur für sponk-mg
Hallo, die Attribute findest du nicht im Modellbereich, die sind ja immer in einer Blockreferenz enthalten. Deshalb wirst du mit (ssget ..) niemals ein Attribut finden. Du musst also die Blockreferenzen (INSERT) suchen und von denen die Attribute auslesen und vergleichen, ob das mit dem gesuchten Namen dabei ist. Grüße Holger ------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen. defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
sponk-mg Mitglied
Beiträge: 38 Registriert: 10.10.2011
|
erstellt am: 28. Okt. 2011 18:31 <-- editieren / zitieren --> Unities abgeben:
Hallo Holger, soweit ich das verstehe kann ich die Gruppencodes für die Attribute selbst in Verbindung mit der Suche nach Blöcken über die Funktion ssget nicht auswählen. D.h. ich verwende dann z.B. entget / assoc, um die Attribute bearbeiten zu können. Sollte das so sein, hast du mich wieder 2 Schritte weitergebracht. Danke sehr. Martin 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: 28. Okt. 2011 18:56 <-- editieren / zitieren --> Unities abgeben: Nur für sponk-mg
Mit (ssget) kannst Du die INSERTS auswählen - Du kriegst einen sogenannten Auswahlsatz. Diesen kannst Du mit (ssname) durchsteppen - liefert Dir Dir den Elementnamen der Blockreferenzen. Mit (entnext) (ev. mehrfach) kommst Du zum gewünschten Attribut und (entget) und (assoc) hast eh schon selber genannt. Jetzt musst nur noch vergleichen, ob der Wert dem Suchfilter entspricht und davon abhängig das Objekt einem (neuen) Auswahlsatz zuordnen (ssadd). Hth ------------------ Schöne Grüße Ernst www.geopaint.at Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 28. Okt. 2011 19:58 <-- editieren / zitieren --> Unities abgeben: Nur für sponk-mg
|
sponk-mg Mitglied
Beiträge: 38 Registriert: 10.10.2011
|
erstellt am: 23. Nov. 2011 11:39 <-- editieren / zitieren --> Unities abgeben:
Hallo, mein Halbwissen stösst mal wieder an seine Grenzen. Statt Blöcke aufzulösen, um Attributtexte zu löschen, möchte ich die Gruppencode 2 und/oder 1 aus dem Block entfernen. (defun attribloe (/ blk INDEX blkatt) (setq blk (ssget "_x" (list '(0 . "INSERT")))) (if (progn (setq INDEX -1) (repeat (sslength blk) (setq blkatt (entget (ssname blk (setq INDEX (1+ INDEX))))) (if (assoc 66 blkatt) (while (/=cdr (assoc 0 blkatt)) "seqend") (setq blkatt (entget (entnext (cdr (assoc -1 blkatt))))) (if(=(cdr (assoc 0 blkatt)) "attrib") (progn (setq blkatt (vl-remove-if '(lambda(x)(=(car X)2))blkatt)) (setq blkatt (vl-remove-if '(lambda(x)(=(car X)1))blkatt)) ) ) ) ) ) ) ) Ich finde den Fehler nicht und bitte um Mithilfe. Zu wenige Argumente: (IF (PROGN (SETQ INDEX -1) (REPEAT (SSLENGTH BLK) (SETQ BLKATT (ENTGET (SSNAME BLK (SETQ INDEX (1+ INDEX))))) (IF (ASSOC 66 BLKATT) (WHILE (/=CDR (ASSOC 0 BLKATT)) "seqend") (SETQ BLKATT (ENTGET (ENTNEXT (CDR (ASSOC -1 BLKATT))))) (IF (= (CDR (ASSOC 0 BLKATT)) "attrib") (PROGN (SETQ BLKATT (VL-REMOVE-IF (QUOTE (LAMBDA (X) (= (CAR X) 2))) BLKATT)) (SETQ BLKATT (VL-REMOVE-IF (QUOTE (LAMBDA (X) (= (CAR X) 1))) BLKATT)))))))) Danke sehr.
Martin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 23. Nov. 2011 12:23 <-- editieren / zitieren --> Unities abgeben: Nur für sponk-mg
|
sponk-mg Mitglied
Beiträge: 38 Registriert: 10.10.2011
|
erstellt am: 23. Nov. 2011 13:12 <-- editieren / zitieren --> Unities abgeben:
|
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 23. Nov. 2011 13:23 <-- editieren / zitieren --> Unities abgeben: Nur für sponk-mg
Zitat: Original erstellt von sponk-mg: Besser wäre es, den GC komplett zu entfernen
Zitat: Original erstellt von sponk-mg: ... mein Halbwissen stösst mal wieder an seine Grenzen. Statt Blöcke aufzulösen, um Attributtexte zu löschen, möchte ich die Gruppencode 2 und/oder 1 aus dem Block entfernen. ...
Was du da vor hast, klingt nicht wirklich sinnvoll. Objekte haben bestimmte Eigenschaften, die untrennbar mit der Existenz des Objektes verknüpft sind. Diese sind in den Gruppencodes organisiert. Du kannst nicht einfach Gruppencodes löschen, da die Objekte die darin abgelegten Eigenschaften in jedem Fall benötigen. Das wäre ja fast so, wenn du vom Objekt MENSCH die Eigenschaft GRÖSSE oder ALTER klaust. Was wäre denn dann mit dem Menschen? Grüße Holger ------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen. defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tunnelbauer Ehrenmitglied V.I.P. h.c. Bauingenieur
Beiträge: 7085 Registriert: 13.01.2004 ich hab eh keine Probleme damit...
|
erstellt am: 23. Nov. 2011 13:29 <-- editieren / zitieren --> Unities abgeben: Nur für sponk-mg
Ein kleiner Einschub zur Variante 1 von CADmium: Alle Attribute (Blöcke) auswählen und dann in den Eigenschaften einfach den Text der Attribute löschen - geht für alle Attribute auf einmal... (auch bei verschiedenen Textinhalten) ------------------ Grüsse Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |