明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1029|回复: 0

[源码] 命令行中出现“选择要添/删除折断的标注或 [多个(M)]”这样一个莫名其妙的提示,

[复制链接]
发表于 2014-6-16 11:35:26 | 显示全部楼层 |阅读模式
;; |标注合并和断开程序
;;; |断开dimbreak,合并dimcombine

(defun zm (et x /)
        (cdr (assoc x (entget et)))
)
(defun pzm (nwzm y obj /)
        (entmod (subst
                                                (cons y nwzm)
                                                (assoc y (entget obj))
                                                (entget obj)
                                        )
        )
)
(defun objnm (ent)
        (vla-get-objectname (vlax-ename->vla-object ent))
)
(defun maxlst (pts / js i x tt jl ds)
        (setq js 0
                                i 0
        )
        (repeat (length pts)
                (setq tt (nth i pts))
                (mapcar
                        '(lambda (x)
                                 (if (> (setq ds (distance tt x))
                                                                js
                                                 )
                                         (setq js ds
                                                                 jl (list x tt)
                                         )
                                 )
                         )
                        pts
                )
                (setq i (1+ i))
        )
        jl
)
;;; |标注断开
(defun c:dimbreak (/ ENT ENT1 GETPT JPT PT1 PT2 XL)
        (vl-load-com)
        (vl-cmdf "undo" "be")
        (if (setq ent (car (entsel "\n选择要断开的标注<退出>:")))
                (progn
                        (redraw ent 3)
                        (setq getpt (getpoint "\n点取断开点:"))
                        (redraw ent 4)
                        (vl-cmdf ".copy" ent "" '(0 0) "@")
                        (setq ent1 (entlast))
                        (setq pt1 (zm ent 13)
                                                pt2 (zm ent 14)
                        )
                        (if (= (objnm ent) "AcDbAlignedDimension")
                                (vl-cmdf ".xline" pt1 pt2 "")
                                (vl-cmdf ".xline" "a" (angtos (zm ent 50) 0 4) pt1 "")
                        )
                        (setq xl (entlast))
                        (pzm (setq jpt (vlax-curve-getClosestPointTo xl getpt))
                                         13 ent
                        )
                        (pzm jpt 14 ent1)
                        (vl-cmdf ".erase" xl "")
                )
        )
        (vl-cmdf "undo" "e")
        (princ)
)
;;; |标注合并
(defun c:dimcombine (/ ANG1 ANG2 ENT ENT1 MAXPT PT1 PT2 PT3 PT4 PT5 PT6 PT7
                                                                                         XL
                                                                                )
        (vl-load-com)
        (vl-cmdf "undo" "be")
        (if (setq ent (car (entsel "\n选择要合并对标注<退出>:")))
                (progn
                        (redraw ent 3)
                        (setq ent1 (car (entsel "\n选择另一个标注对象<退出>:")))
                        (redraw ent 4)
                        (setq pt1 (zm ent 13)
                                                pt2 (zm ent 14)
                                                pt3 (zm ent1 13)
                                                pt4 (zm ent1 14)
                        )
                        (if (= (objnm ent) "AcDbAlignedDimension")
                                (setq ang1 (angle pt1 pt2))
                                (setq ang1 (zm ent 50))
                        )
                        (if (= (objnm ent1) "AcDbAlignedDimension")
                                (setq ang2 (angle pt3 pt4))
                                (setq ang2 (zm ent1 50))
                        )
                        (if (or
                                                (or
                                                        (equal ang2 ang1 0.00001)
                                                        (equal (+ pi ang2) ang1 0.00001)
                                                )
                                                (equal (- ang2 pi) ang1 0.00001)
                                        )
                                (progn
                                        (vl-cmdf ".xline" "a" (angtos ang1 0 4) pt1 "")
                                        (setq xl (entlast))
                                        (setq pt5 (vlax-curve-getClosestPointTo xl pt2)
                                                                pt6 (vlax-curve-getClosestPointTo xl pt3)
                                                                pt7 (vlax-curve-getClosestPointTo xl pt4)
                                        )
                                        (setq maxpt (maxlst (list pt1 pt5 pt6 pt7)))
                                        (pzm (car maxpt) 13 ent)
                                        (pzm (cadr maxpt) 14 ent)
                                        (vl-cmdf ".erase" xl ent1 "")
                                )
                        )
                )
        )
        (vl-cmdf "undo" "e")
        (princ)
)
这是网上下载的程序,尺寸断开命令在cad2007中正常,但在2012中不能用 命令行中出现“选择要添加/删除折断的标注或 [多个(M)]”这样一个莫名其妙的提示,


"觉得好,就打赏"
还没有人打赏,支持一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-24 14:00 , Processed in 0.179040 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表