WERKENDE CODE MET WAT UITLEG
Omdat ik zelf ook graag begrijp wat er staat en graag leer van een ander, deel ik ook graag mijn kennis.
Omdat ik zelf ook graag begrijp wat er staat en graag leer van een ander, deel ik ook graag mijn kennis.
Code Selecteer
; Deze routine telt een getal wat meegegeven wordt vanuit autocad op bij elke tekst die geselecteerd wordt
; ideaal om bvb component nummers aan te passen
; de routine is bedoel in combinatie met een aantal knoppen in een toolbar die de verschillende optelwaarden bepalen
; tot er iets anders dan tekst geselecteerd wordt
; 20.11.2013
(defun plus( xfactor / cntr str ch numpart strpart numstr ent oldtext atortxt modtxt txtormtxt el mt selatt )
(setq cntr 0) ;om clean te kunnen exiten
(while (< cntr 1) ;eindeloze lus instellen
(setq ent (nentselp "Select source Text: " )) ;brontekst mag alles zijn, doch met een numprt op het einde
(if ent ;als er tekst geselecteerd is
(progn ;progn1
(setq str (cdr(assoc 1 (entget (car ent ))))) ;brontekst ophalen
(setq strPart "" numPart "" chkStr str flag T) ;variabelen initialiseren
(while(/= chkStr "") ;zolang chkstr niet leeg is doe
(setq ch(substr chkStr (strlen chkStr))) ;Get the last character in the string
(if(= flag T)
(progn ;progn2
(if(member ch (list "1" "2" "3" "4" "5" "6" "7" "8" "9" "0"))
(setq numPart(strcat ch numPart)) ;als ch=cijfer voeg samen met het numgedeelte
(setq flag nil strPart chkStr) ;Else flag false want rest is letters
) ;end if member
) ;progn2
) ;end if flag
(setq chkStr(substr chkStr 1 (- (strlen chkStr) 1)));laatste letter er af en next while loop
) ;while chkstr
(setq numLen(strlen numPart));bepaal lengte van numgedeelte
(setq numStr (itoa(+ (atoi numPart) xfactor))) ;str to int +xfactor en int to str
(while(< (strlen numStr) numLen) ;aanvullen met 0-en mochten er minder char zijn dan origineel
(setq numStr(strcat "0" numStr))
) ;while
(setq str(strcat strPart numStr)) ;voeg alles weer samen
(setq txtormtxt (cdr(assoc 0 (entget (car ent )))))
(cond ;afvraging
((or (= txtormtxt "TEXT")(= txtormtxt "MTEXT")) ;optie 1 is het text of is het mtext
(progn ;progn3
(setq dimormtxt (cdr(assoc 42 (entget (car ent )))))
(if (/= dimormtxt nil) ;if
(progn ;then 4
(setq seldimt (cdr (assoc -1 (entget (car ent )))))
(setq strdimedit (substr str 5 (strlen str)))
(command "dimedit" "n" strdimedit seldimt "")
) ;progn4
(progn ;else 5
(setq el (entget (car ent )))
(setq mt (subst (cons 1 str) (assoc 1 EL) EL))
(entmod mt)
) ;progn5
) ;if
) ;progn3
) ;end cond or optie1
((= txtormtxt "ATTRIB") ;optie 2 is het attrib
(progn ;progn6
(setq selatt (cdr (assoc -1 (entget (car ent ))))) ;naam van de geselecteerde entity uithalen
(command "-attedit" "" "" "" "" selatt "v" "r" str "") ;om de waarde in te voegen in deze entity
) ;progn6
) ;end cond or optie 2
(T (princ "\n Invalid Selection... ")) ;user kiest iets anders dan tekst om te exiten
) ;cond end
) ;progn1
(setq cntr 10) ;else clean exit activeren
) ;end if ent
) ;while cntr<1
(princ)
) ;defun