(defun c:LE1 (/ *error* oldosmode ent blkname ptarrow pttext blkname txtsize arrsize mleadEnt vObj) (vl-load-com) (defun *error* (msg) (if oldosmode (setvar "osmode" oldosmode)) (if (not (wcmatch (strcase msg t) "*break*,*cancel*")) (princ (strcat "\n错误:" msg)) ) (princ) ) ;;====在这里修改默认数值==== (setq txtsize 2.5 ;文字高度 arrsize 2.0) ;箭头大小 (setq oldosmode (getvar "osmode")) (setvar "osmode" 0) ;;选择块 (setq ent (car (entsel "\n请选择图块对象:"))) (if (not ent) (progn (setvar "osmode" oldosmode)(princ "\n未选择对象。")(princ)(exit)) ) (if (/= (cdr (assoc 0 (entget ent))) "INSERT") (progn (setvar "osmode" oldosmode)(princ "\n选中不是图块!")(princ)(exit)) ) (setq blkname (cdr (assoc 2 (entget ent)))) ;;拾取箭头点、文字点 (initget 1) (setq ptarrow (getpoint "\n指定【箭头落点】(点击块上位置):")) (initget 1) (setq pttext (getpoint ptarrow "\n指定【文字放置位置】:")) ;;生成多重引线,记录新生成的图元名 (setq mleadEnt (entlast)) (command "_mleader" ptarrow pttext blkname) ;;获取刚生成的多重引线对象 (setq mleadEnt (entnext mleadEnt)) (setq vObj (vlax‑ename‑to‑vla‑object mleadEnt)) ;;直接修改本根引线的属性,不碰样式 (vl‑catch‑all‑apply 'vla‑put‑textheight (list vObj txtsize)) (vl‑catch‑all‑apply 'vla‑put‑arrowheadsize (list vObj arrsize)) ;;恢复系统变量 (setvar "osmode" oldosmode) (princ (strcat "\n已创建块名引线,块名:" blkname)) (princ) ) (princ "\n=====块名引线 加载完成 =====") (princ "\n命令:LE1 →选块→点箭头位置→点文字位置") (princ "\n⚠️不修改任何引线样式,仅对当前生成引线生效") (princ)