Herzlich Willkommen !
Deine Annahme ist richtig, aber es gibt noch mehr Probleme..
das evaluieren schaffen wir so {wir nehmen das 'QUOTE weg und erschaffen ein dottedpair mit "cons" (cons 1 "A")=> (1 . "A") }:
(defun staerke( _element _a / )
(entmod
(list
(cons 370 _a)
(assoc -1 _element)
)
)
)
wenn man es so verwenden würde, käme bei deinem entmod aber vermutlich dies an:
(entmod ((370 . 0.35)(-1 . <Objektname: 7e5643b0> )))
das wird Acad nicht akzeptieren, wenn dann müßte das
(entmod
(SUBST (cons 370 _a)(assoc 370 _element)_element)
)
lauten. DAS wird aber nur bei Objekten funktionieren welche eine Linienstärke ungleich "VonLayer" haben
denn nur dann ist der gc(GruppenCode) 370 überhaupt vorhanden ! Und wenn er nicht vorhanden ist läuft das
Programm in einen Fehler !
Beispiel - Objekt OHNE Linienstärke ungleich VonLayer:
Befehl: (setq _element (entget(car(entsel))))
Objekt wählen: ((-1 . <Objektname: 7e5643a0> ) (0 . "LINE") (330 . <Objektname:
7e562c10> ) (5 . "154") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0")
(100 . "AcDbLine") (10 2.03663 9.52242 0.0) (11 5.2955 11.6996 0.0) (210 0.0
0.0 1.0))
Befehl: (assoc 370 _element)
nil
Beispiel - Objekt MIT Linienstärke ungleich VonLayer:
Befehl: (setq _element (entget(car(entsel))))
Objekt wählen: ((-1 . <Objektname: 7e5643b0> ) (0 . "LINE") (330 . <Objektname:
7e562c10> ) (5 . "156") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0")
(370 . 13) (100 . "AcDbLine") (10 4.96768 7.7884 0.0) (11 7.39737 11.006 0.0)
(210 0.0 0.0 1.0))
Befehl: (assoc 370 _element)
(370 . 13)
hier eine funktionsfähige Version:
(defun staerke ( _element _a / )
(entmod
(if (assoc 370 _element)
(subst (cons 370 _a) (assoc 370 _element) _element)
(append _element (list(cons 370 _a)))
)
)
)
dann kann man es aber auch gleich multifunktioneller erstellen:
(defun SETGC ( _element dxfc _a / )
(if (= 'ENAME (type _element))(setq _element (entget _element))); falls ENAME übergeben wird
(entmod
(if (assoc dxfc _element)
(subst (cons dxfc _a) (assoc dxfc _element) _element)
(append _element (list(cons dxfc _a)))
)
)
)
anzuwenden wäre es dann so:
(setgc (car(entsel)) 370 70)
(setgc (entget(car(entsel))) 370 70)
oder so:
(setgc (car(entsel)) 62 3)
(setgc (entget(car(entsel))) 8 "0")
etc.
------------------
CAD.de System-Angaben - CAD on demand - User:FAQ(Acad)
[Diese Nachricht wurde von cadffm am 03. Jan. 2012 editiert.]
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP