本帖最后由 王鹏_pBZlo 于 2019-10-12 09:00 编辑
 - (defun c:tt( / peatemp txtss txtlst txt tstr cp ctxt i pl)
- (defun CpOfEnt (ent / pmin pmax)
- (vl-load-com)
- (vla-getboundingbox (vlax-ename->vla-object ent) 'minpoint 'maxpoint)
- (setq pmax (vlax-safearray->list maxpoint) pmin (vlax-safearray->list minpoint))
- (list (/ (+ (car pmin) (car pmax)) 2.0)(/ (+ (cadr pmin) (cadr pmax)) 2.0)))
- (setq txtss (ssget "x" (list (cons 0 "*TEXT"))))
- (setq txtlst nil i -1)
- (command "undo" "be")
- (setq peatemp (getvar "peditaccept"))
- (setvar "peditaccept" 1)
- (while (setq txt (ssname txtss (setq i (1+ i))))
- (setq tstr (cdr (assoc 1 (entget txt))))
- (setq cp (cpofent txt))
- (if (setq ctxt (assoc tstr txtlst))
- (progn (entmake (list (cons 0 "LINE") (cons 10 (nth 1 ctxt)) (cons 11 cp)))
- (if (= (nth 2 ctxt) 0)
- (progn (command "pedit" (entlast) "")
- (command "change" (entlast) "" "P" "c" "1" "")
- (setq pl (entlast))
- )
- (command "pedit" (setq pl (nth 3 ctxt)) "j" (entlast) "" "")
- )
- (setq txtlst (subst (list tstr cp 1 pl) ctxt txtlst))
- )
- (setq txtlst (append txtlst (list (list tstr cp 0))))
- )
- )
- (setvar "peditaccept" peatemp)
- (command "undo" "e")
- (princ)
- )
|