本帖最后由 print1985 于 2013-1-23 10:23 编辑
 - ;提取文字边界 命令bj
- (defun c:bj (/ en1 end1 en2 en3 end2 i ss txt txtpt)
- (setvar "cmdecho" 0)
- (command "_.undo" "_begin")
- (princ "选择含有<砖、混、泥>的文字")
- (if (setq ss (ssget '((1 . "砖*,混*,泥*")))) ;提取文字,文字内容请自行修改
- (progn
- (setq i 0)
- (repeat (sslength ss)
- (setq en1 (ssname ss i)
- end1 (entget en1)
- txt (cdr (assoc 1 end1))
- txtpt (cdr (assoc 10 end1))
- en3 (entlast)
- )
- (command "bpoly" txtpt "")
- (setq en2 (entlast)
- end2 (entget en2)
- )
- (if (equal en2 en3)
- (princ "\n有未闭合区域,请检查!")
- (progn
- (entmod (setq end1 (subst(cons 8 txt)(assoc 8 end1)end1))) ;改文字图层
- (entmod (setq end2 (subst(cons 8 txt)(assoc 8 end2)end2))) ;改边界图层
- (command "layer" "off" txt "") ;关闭图层,不需要就删掉
- )
- )
- (setq i (1+ i))
- )
- )
- )
- (command "_.undo" "_end")
- (setvar "cmdecho" 1)
- (princ)
- )
再试试 不知是不是你要的效果 |