| |
| 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: Attribute in Blöcken ändern (1500 mal gelesen)
|
palupp Mitglied Dipl. Ing.
Beiträge: 11 Registriert: 05.04.2006
|
erstellt am: 05. Apr. 2006 12:08 <-- editieren / zitieren --> Unities abgeben:
Hallo Lisp-Experten, folgende Situation: in meinen Plan habe ich mehrere Blöcke mit jeweils 5 hinterlegten Attributen. Diese Attribute liegen alle auf dem gleichen Layer. Aufgabe: die Attribute innerhalb der Blöcke müssen separaten Layern zugewiesen werden. 1.Kann man die Layerzugehörigkeit nachträglich ändern? 2.Kann man sich die Layerzugehörigkeit der Attribute anzeigen lassen, ohne den Block aufzulössen? 3.Welche Möglichkeit gibt es, nicht jeden Block manuell einzel zu bearbeiten ? Vielen Dank für eure Hilfe MfG Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 05. Apr. 2006 12:15 <-- editieren / zitieren --> Unities abgeben: Nur für palupp
|
palupp Mitglied Dipl. Ing.
Beiträge: 11 Registriert: 05.04.2006
|
erstellt am: 05. Apr. 2006 13:13 <-- editieren / zitieren --> Unities abgeben:
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 05. Apr. 2006 13:28 <-- editieren / zitieren --> Unities abgeben: Nur für palupp
na ok .. zu 2. wäre z.B. (cdr(assoc 8(entget(car(nentsel))))) ne Lösung zu 1. kann mit entmod oder vla-put-layer erledigt werden zu 3. a)Blockname holen b)alle Referenzen des Blockes durchlaufen c)Test, ob Attribute vorhanden d) wenn ja, in Abhängigkeit der Attributsbezeichnung 1. anwenden hoffe das hilft dir weiter ------------------ - 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 |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 05. Apr. 2006 14:52 <-- editieren / zitieren --> Unities abgeben: Nur für palupp
Hallo palupp, in folgenden Code kannst Du den Layer von einzelnen Attributen (Nr angeben)oder von allen in einem Abwasch ändern, probier es mal aus, gestartet wird mit "test" Code:
(defun c:test ( / layer nr n m) (setq layer (getstring "\nBitte neuen Layer eingeben:") nr (getint "\nBitte Attributsnummer eingeben (ENTER=alle)")) (if (and layer(setq aws (ssget (list (cons 0 "INSERT"))))) (progn (setq n 0) (repeat (sslength aws) (setq att (ssname aws n) m 1) (while (=(cdr(assoc 0(entget (setq att (entnext att)))))"ATTRIB") (cond ((= nr m) (entmod (subst (cons 8 layer)(assoc 8 (entget att))(entget att)))) ((not nr) (entmod (subst (cons 8 layer)(assoc 8 (entget att))(entget att))))) (setq m (+ m 1))) (entupd (ssname aws n)) (setq n (+ n 1)))) (alert "Kein Block ausgewählt oder kein Layer eingegeben.")) )
------------------ viele Grüße Jörn Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
palupp Mitglied Dipl. Ing.
Beiträge: 11 Registriert: 05.04.2006
|
erstellt am: 05. Apr. 2006 15:59 <-- editieren / zitieren --> Unities abgeben:
Hallo Jörn, da hast du ja ein prima Programm entwickelt. Funktioniert ohne Probleme! Kannst du das Programm so erweitern, dass 1. eine Abfrage kommt, wieviele Attribute pro Block bearbeitet werden (n) 2. n-mal die Abfrage zum neuen Layernamen kommt (Layername für 1.Attribut, Layername für 2. Attribut, Layername für n.Attribut) 3. Auswahl der zu bearbeiteten Blöcke kann manuell erfolgen wenns, nicht zu viel Mühe und Zeit kostet, wäre das wirklich toll. Vielen Dank Carsten Kretzschmar Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 05. Apr. 2006 16:27 <-- editieren / zitieren --> Unities abgeben: Nur für palupp
Hallo Carsten, im Moment nicht, da meine Zeit in der Tat mal wieder knapp wird, und weil es hier auch nicht meine Aufgabe sein kann, komplett fertigen Code zu posten. Aber vielleicht erbarmt sich ja noch einer hier im Forum. Aber, ich weiß nicht wie es mit Deinen LISP-Kentnissen steht, vielleicht solltest Du Dich anhand der Grundlage mal ein bißchen daran probieren. Wenn Du aber fertigen Programmierungen interessiert bist, kannst Du Dich direkt an mich wenden, dann aber nicht kostenlos. ------------------ viele Grüße Jörn Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |