laoliu09 发表于 2005-4-18 22:34:00

尺寸界线修剪的问题?

我想用<FONT color=#f70968>VBA</FONT>编一个修剪<FONT color=#f70968>对齐标注</FONT>尺寸界线的程序,其实是想模仿天正建筑的修剪尺寸界线的方法,我一开始是想通过修改标注原点来实现的,但发现尺寸线也跟着有一小段位移,按照常规想法,尺寸线应该不动才对。而用天正建筑的修剪尺寸界线里就没有这个现象!但我想原理是差不多的,真不知道为什么啊!希望有人能帮我写一个,或给点提示也好!这困惑了我好久啊!另外,我用其他方法也可以实现,但稍微复杂一点,要通过扩展数据才可以实现,但个别情况下不尽人意。<FONT color=#ff0000>这个问题的关键是:实现这个效果到底是不是修改对齐标注的原点就可以,怎样确保尺寸线不要随着对齐标注原点的变化而移动。但我想除了修改对齐标注的原点外,好像没什么办法了吧,不知道我想歪了没有,急需高手指点!谢谢!</FONT>

cobalt 发表于 2005-4-19 10:25:00

天正建筑没有用过,所以不知道你到底是什么意思。


其实,你可以放两张图片在这里,大家就清楚你的目的了。

laoliu09 发表于 2005-4-19 22:23:00

只要是画过图的就知道什么是修剪<FONT color=#f70968>对齐标注</FONT>尺寸界线,希望各位老大帮帮忙啊,我真的好困惑啊!

laoliu09 发表于 2005-4-20 22:10:00

我真的好困惑,我见过很多人用lisp编过,但我不会lisp,所以想请有经验的人给个提醒也好,到底怎样修剪对齐标注啊?

mccad 发表于 2005-4-21 07:07:00

对齐标注的定义以前已经说过。<BR>要修剪就必须两条尺寸界线一起修剪,而且修剪的长度必须相同,否则它就会动。

ljpnb 发表于 2005-4-21 10:27:00

明总,dimaligned的两条尺寸界线,修剪长度肯定是相同,要不然两个extlinepoint之间的长度不是变了,但就算是修剪相同长度,它还是会变,而且尺寸越小,修剪越长,变的位置越明显。

laoliu09 发表于 2005-4-21 10:58:00

楼上的说得对,这正是困惑我很久的问题,明总,我见过其他人编的lisp程序,我虽然不会lisp,但我看他们好像用到旋转标注,但我要修剪的是对齐标注,跟旋转标注好像没关系的啊?希望你能指教一下,万分感谢!

laoliu09 发表于 2005-4-21 19:50:00

(princ "\ndmtr2=====dim trim 剪齐dim边界线---v2 终结版----------lxx.2002\n")<BR>;;;<BR>(defun c:dmtr2 ( / pt1 pt2 ss i ent entl p10 p13 p14 ptt np14 np13)<BR>(princ "\ndmtr2=====dim trim 剪齐dim边界线--v2 终结版-----------lxx.2001")<BR>(command "_.undo" "be" ^c )<BR>;;;<BR>(defun *error* (msg) (print msg)(command       "_.undo" "e" ^c)(setq *error* nil))<BR>;;;<BR>(setq pt1 (getpoint "\n定义修剪界线 (只处理相交的dim),起点:")<BR>                                       pt2 (getpoint pt1 "\n终点:")<BR>                                       ss (ssget "f" (list pt1 pt2) '((0 . "DIMENSION")) )<BR>                                       pt1 (trans pt1 1 0)<BR>                                       pt2 (trans pt2 1 0)<BR>                                       i 0<BR>)<BR>(repeat (sslength ss)<BR>        (setq ent (ssname ss i)<BR>                                       entl (entget ent)<BR>                                       p10 (cdr (assoc 10 entl))<BR>                                       p13 (cdr (assoc 13 entl))<BR>                                       p14 (cdr (assoc 14 entl))<BR>                       ;;ptt (cdr (assoc 11 entl));;文字定位<BR>                                       i (1+ i)<BR>                                       pt1 (polar pt1 (angle pt1 pt2) (/ (distance pt1 pt2) 2) ) ;;变为pt1 pt2的中点<BR>                                       pt2 (polar pt1 (+ (/ PI 2) (angle p10 p14)) 100)<BR>                                       np14 (inters pt1 pt2 p14 p10 nil)<BR>        )<BR>        (if (not(member '(100 . "AcDbRotatedDimension") entl)) ;;如果不是linear类型<BR>                               (setq np13 (polar np14 (angle p14 p13) (distance p14 p13)))<BR>                               (setq np13 (inters pt1 pt2 p13 (polar p13 (angle p14 p10) 100) nil))       ;;else;;align类型<BR>        )<BR>        (setq entl (subst (cons 13 np13) (assoc 13 entl) entl)<BR>                                               entl (subst (cons 14 np14) (assoc 14 entl) entl)<BR>        )<BR>       (entmod entl)<BR>);end repeat<BR>(command "_.undo" "e" ^c)<BR>(setq *error* nil)<BR>(princ)<BR>)<BR>以上是我拷别人的,什么意思啊?思路是怎样的呢?用vba怎样实现呢?谢了!

mccad 发表于 2005-4-21 21:30:00

你还是把你的程序和图形传上来调试。

laoliu09 发表于 2005-4-21 22:13:00




各位试试这个修剪对齐标注的程序吧,这用vba怎样实现呢?帮我翻译成vba行吗?谢谢各位老大啦!我想问的就是:<FONT color=#ff0000>实现这个效果到底是不是修改对齐标注的原点就可以,怎样确保尺寸线不要随着对齐标注原点的变化而移动。但我想除了修改对齐标注的原点外,好像没什么办法了吧,不知道我想歪了没有?</FONT>
页: [1] 2 3
查看完整版本: 尺寸界线修剪的问题?