CADsite forum

AutoCAD => Autolisp => Topic gestart door: delangstevandestraat op wo 10 12 2014, 15:56:01

Titel: ik zoek de string value van een attrib van een block OPGELOST
Bericht door: delangstevandestraat op wo 10 12 2014, 15:56:01
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... ??
Titel: Re: ik zoek de string value van een attrib van een block
Bericht door: roy_043 op wo 10 12 2014, 16:32:39
Het gemakkelijkste is om VL functies te gebruiken:
http://www.cadsite.be/smf/index.php?topic=5814.msg30467#msg30467
Titel: Re: ik zoek de string value van een attrib van een block
Bericht door: delangstevandestraat op do 11 12 2014, 08:49:33
heb je daar misschien iets meer uitleg bij want VL heb ik al altijd angstvallig vermeden :-|
dat ziet er nog veel ingewikkelder uit, vandaar
Titel: Re: ik zoek de string value van een attrib van een block OPGELOST
Bericht door: delangstevandestraat op do 11 12 2014, 10:09:57
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
Titel: Re: ik zoek de string value van een attrib van een block OPGELOST
Bericht door: roy_043 op do 11 12 2014, 10:23:20
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'.
Titel: Re: ik zoek de string value van een attrib van een block OPGELOST
Bericht door: delangstevandestraat op do 11 12 2014, 11:41:23
Dag roy,

wat bedoel je met

"hmmm vreemde code" ?

interessant ?
of
het klopt niet ?

want mijn lisp doet wel wat ie moet doen   :D
Titel: Re: ik zoek de string value van een attrib van een block OPGELOST
Bericht door: roy_043 op vr 12 12 2014, 11:09:35
In jouw code ga je van A via B en C weer naar A. Met andere woorden: jouw code bevat onnodige stappen.
Titel: Re: ik zoek de string value van een attrib van een block OPGELOST
Bericht door: delangstevandestraat op vr 12 12 2014, 15:03:03
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))))))