好几年前,我也写过,也分享下
 - ;;说明:标注批量添加直径符号
- (defun C:DDAD(/ dxfstr edata ent i n obj ss)
- (vl-load-com)
- (command "UNDO" "be")
- (if (setq ss (ssget '((0 . "DIMENSION"))))
- (progn
- (setq n -1 i 0)
- (while (setq ent (ssname ss (setq n (1+ n))))
- (setq obj (vlax-ename->vla-object ent) edata (entget ent) dxfstr (assoc 1 edata))
- (if (not (or (vl-string-search "%%C" (strcase (cdr dxfstr))) (and (equal (vl-string-trim "(< >)" (cdr dxfstr)) "") (equal (strcase (vl-string-trim " " (vla-get-TextPrefix obj))) "%%C"))))
- (progn
- ;;(vla-put-TextPrefix obj "%%C")
- (entmod (subst (cons 1 (strcat "%%c" (if (= "" (cdr dxfstr)) "<>" (cdr dxfstr)))) dxfstr edata))
- (setq i (1+ i))
- )
- )
- )
- (princ (strcat "\n选择了" (itoa (sslength ss)) "个图元;处理了" (itoa i) "个图元!" ))
- )
- )
- (command "UNDO" "e")
- (prin1)
- )
- ;;说明:标注批量删除直径符号
- (defun C:DDCD(/ dxfstr edata ent i idx n obj ss)
- (vl-load-com)
- (command "UNDO" "be")
- (if (setq ss (ssget '((0 . "DIMENSION"))))
- (progn
- (setq n -1 i 0)
- (while (setq ent (ssname ss (setq n (1+ n))))
- (setq obj (vlax-ename->vla-object ent) edata (entget ent) dxfstr (assoc 1 edata))
- (if (= (setq idx (vl-string-search "%%C" (strcase (cdr dxfstr)))) 0)
- (progn
- (entmod (subst (cons 1 (substr (cdr dxfstr) 4)) dxfstr edata))
- (setq i (1+ i))
- )
- (if (equal (strcase (vl-string-trim " " (vla-get-TextPrefix obj))) "%%C")
- (vla-put-TextPrefix obj "")
- )
- )
- )
- (princ (strcat "\n选择了" (itoa (sslength ss)) "个图元;处理了" (itoa i) "个图元!" ))
- )
- )
- (command "UNDO" "e")
- (prin1)
- )
|