- (defun C:STM (/ cpent elist en ip newtxt pt ss sum sumtxt txt)
- (princ "\n\t\t>>> Select text to get summ >>>")
- (if
- ;;select texts/mtexts on screen :
- (setq ss (ssget '((0 . "*TEXT"))))
- ;; if selected then :
- (progn
- ;; store the first text entity for using 'em further :
- (setq cpent (ssname ss 0))
- ;; set initial sum to zero :
- (setq sum 1)
- ;; loop trough selected texts/mtexts :
- (while
- ;; get the first text in selection :
- (setq en (ssname ss 0))
- ;; get entity list of them :
- (setq elist (entget en))
- ;; get the textstring by key 1 from entity list :
- (setq txt (cdr (assoc 1 elist)))
- ;; create output string :
- (setq sumtxt
- ;; concatenate strings :
- (strcat
- ;; convert digits to string :
- (rtos
- ;; add to summ the digital value of text :
- (setq sum (* (atof txt) sum))
- ;; 2 is for metric units (3 for engineering) :
- 2
- ;; set precision by current :
- (getvar "dimdec")))
- )
- ;; delete entity from selection set :
- (ssdel en ss)
- )
- ;; display message in the command line:
- (princ (strcat "\nSumm=" sumtxt))
- (setq pt (getpoint "\nSpecify the new text location: "))
- ;; get the insertion point of stored entity :
- (setq ip (cdr (assoc 10 (entget cpent))))
- ;; copy text entity to the new destination point :
- (command "_copy" cpent "" ip pt)
- ;; get the last created entity :
- (setq newtxt (entlast))
- ;; get entity list of them :
- (setq elist (entget newtxt))
- ;; modify entity list with new text string :
- (entmod (subst (cons 1 sumtxt)(assoc 1 elist) elist))
- ;; update changes :
- (entupd newtxt)
- )
- )
- (princ)
- )
- (princ "\nStart command with STM")
- (princ)
|