FastFiber

OPGELOST - attrib. definition van meerdere external blocks automatisch wijzigen

Gestart door gery, do 31 03 2016, 19:38:57

Vorige topic - Volgende topic

gery

Ik heb honderden externe blocks (*.dwg) die alle eenzelfde "attribute definition" hebben, dus met eenzelfde "tag", nl. tag "1001". Echter, de "prompts" van die "attribute definitions" zijn leeg. (zie bijlage 1)

Ik zoek nu een manier (LISP) om die "prompts" in al deze blocks automatisch in te vullen met eenzelfde tekst, nl. "Component nr." (zie bijlage 2)

Heeft iemand een kant en klare oplossing, of een aanzet in de goede richting?

AutoCAD 2020 - Windows 10

EddyBeerke

Het geliefde babe van joop zou een uitkomst kunnen bieden.
Samen met een lisproutine baarbij je de attribute selecteerd en dan de wijigingen doet.
Zal morgen even naar kijken.
Als ik een antwoord heb dan laat ik je dat weten...

Verstuurd vanaf mijn LG-E975 met Tapatalk

Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/

EddyBeerke

Om je alvast op weg te helpen:
;;; Attribute aanpassen
(vl-load-com)
(defun c:att_change_prompt ( /  e o PromptString )
(setq e (car (entsel))
(setq o (vlax-ename->vla-object e))
(vla-put-PromptString o "Vul hier de nieuwe prompt in"))
(princ)
)


Gebruik het comando "att_change_prompt" om de lisp uit te voeren.
Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/

EddyBeerke

Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/

gery

Bedankt Eddy!

'k heb ondertussen 2 "oplossingen":

1. met LISP code:

(setq #OldEntData (entget (ssname (ssget "x" '((-4 . "<or") (2 . "1001") (-4 . "or>"))) 0)))
(setq #OldPrompt (assoc 3 #OldEntData))
(setq #NewPrompt (cons 3 "Component nr."))
(setq #NewEntData (subst #NewPrompt #OldPrompt #OldEntData))
(entmod #NewEntData)

2. met LISP en VLISP code:

(vla-put-PromptString (vlax-ename->vla-object (ssname (ssget "x" '((-4 . "<or") (2 . "1001") (-4 . "or>"))) 0)) "Component nr.")
AutoCAD 2020 - Windows 10

FastFiber