本帖最后由 qinleilei 于 2015-10-1 14:39 编辑
最近写了个代码,主要是方便自己标注坐标后用于坐标数值对其,使其美观,但是在使用中发现了问题。
先贴上代码,后面再上图讨论。本人搞模具的,出2D图纸标注占了一大半的工作量
- (DEFUN C:cb()
- (setvar "CMDECHO" 0)
- (command "ucs" "w")
- (princ "\n选择参考尺寸: ")
- (setq ent(entget(car (entsel))))
- (setq ge (cdr (assoc 70 ent)));根据组码70来判断横纵坐标类型
- (princ "\n选择需要修改的尺寸: ")
- (setq ss (ssget (list '(0 . "DIMENSION") (cons 70 ge))));按横纵坐标标注类型创建选择集
- (COND
- ((= ge 102)(setq ref(caddr(assoc 14 ent))))
- ((= ge 38)(setq ref(cadr(assoc 14 ent))))
- (progn
- (princ "\n选取的图元错误!!!")
- (quit)
- )
- )
- (setq n 0)
- (repeat (sslength ss)
- (setq en (entget (ssname ss n)))
- (setq p1 (assoc 14 en))
- (setq p2(cadr p1))
- (COND
- ((= ge 102)(setq p2(caddr p1)))
- ((= ge 38)(setq p2(cadr p1)))
- (progn
- (princ "\n选取的图元错误!!!")
- (quit)
- )
- )
- (setq p3(subst ref p2 p1))
- (entmod(subst p3 p1 en))
- (setq n(1+ n))
- )
- ) (princ)
图一中是演示的效果,选取参考值,使同类型的标注文字对齐,看似没有问题。接着往下看图二 图三
大家仔细看会发现,拖动标注文字夹点后 组码70的值变了。
我是根据组码70的值 102和38 来判断横纵坐标的类型的,那么问题来了,如果我在标注过程中有拖动坐标,那么70的组码就会变动,接着图一的演示也就宣告失败了!
还望各位大师不吝赐教,公司用的是正版中望CAD,没有网络,好不容易国庆一天假 跑网吧来了,装个CAD来发这个求助帖
各位可不要让我白跑一趟呀[em0]
写代码纯属业余,上面代码中用组码70来判断横纵坐标标注类型,纯粹是自己根据坐标标注的群码对比找出来的不同处。不知道各位一般是根据什么来判断的,还有就是上面的代码应该还可以精简下,就是不知道怎么弄,谁要是有高招还望指点下
谢谢了!
|