Ik heb een block geselecteerd met ssget,
en in die block ben ik op zoek naar de tekst die in een attrib zit,
ik heb vroeger al zo teksten laten wijzigen in lisp maar dan had ik iedere keer de tekst effectief aangeklikt in autocad, nu moet het meer vanzelf lopen zonder interactie, vandaar met ssget,...
maar hoe geraak ik dan aan die tekst waarde... ??
Het gemakkelijkste is om VL functies te gebruiken:
http://www.cadsite.be/smf/index.php?topic=5814.msg30467#msg30467
heb je daar misschien iets meer uitleg bij want VL heb ik al altijd angstvallig vermeden :-|
dat ziet er nog veel ingewikkelder uit, vandaar
hieronder stukje code waarmee ik de attrib value gevonden heb na een ssget
het staat opgesplitst in stapjes, om ev te bekijken in watch,
zo probeer ik toch altijd te volgen waar iets vandaan komt
(setq selset (ssget "x" (list (cons 410 (getvar "ctab")) (cons 2 "blocknaam"))))
(setq ent (ssname selset 0)) ;
(setq details (entget ent))
(setq v6 (assoc -1 details))
(setq v7 (cdr v6))
(setq v8 (entnext v7))
(setq next (entget v8))
(setq v9 (assoc 1 next))
(setq attrib (cdr v9))
of in t kort :
(setq selset (ssget "x" (list (cons 410 (getvar "ctab")) (cons 2 "blocknaam"))))
(setq ent (entget(ssname selset 0))) ;
(setq attrib (cdr (assoc 1 (entget (entnext (cdr (assoc -1 ent)))))))
ere wie ere toekomt, ik heb dit gedistilleerd uit een stukje van hofcad
Hmm, vreemde code:
(ssname selset 0)
en
(cdr (assoc -1 ent))
bevatten dezelfde waarde...
Misschien is dit interessant als je geen VL wilt gebruiken:
http://www.cadsite.be/smf/index.php?topic=4759.msg25215#msg25215
Zoek naar de functie 'kg:InsertEname->AttribElist'.
Dag roy,
wat bedoel je met
"hmmm vreemde code" ?
interessant ?
of
het klopt niet ?
want mijn lisp doet wel wat ie moet doen :D
In jouw code ga je van A via B en C weer naar A. Met andere woorden: jouw code bevat onnodige stappen.
onnodige ? daar had ik niet op gelet ?
ik zal ondertussen nog eens via watch de verschillende stappen bekijken ;-)
ben er intussen zelf uitgekomen, ge hebt gelijk,(waar ik niet aan twijfelde) maar wat straffer is : ik heb het gezien en code aangepast
(setq selset (ssget "x" (list (cons 410 (getvar "ctab")) (cons 2 "blocknaam"))))
(setq attrib (cdr (assoc 1 (entget (entnext (ssname selset 0))))))