明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 8349|回复: 25

尺寸界线修剪的问题?

  [复制链接]
发表于 2005-4-18 22:34:00 | 显示全部楼层 |阅读模式
我想用VBA编一个修剪对齐标注尺寸界线的程序,其实是想模仿天正建筑的修剪尺寸界线的方法,我一开始是想通过修改标注原点来实现的,但发现尺寸线也跟着有一小段位移,按照常规想法,尺寸线应该不动才对。而用天正建筑的修剪尺寸界线里就没有这个现象!但我想原理是差不多的,真不知道为什么啊!希望有人能帮我写一个,或给点提示也好!这困惑了我好久啊!另外,我用其他方法也可以实现,但稍微复杂一点,要通过扩展数据才可以实现,但个别情况下不尽人意。这个问题的关键是:实现这个效果到底是不是修改对齐标注的原点就可以,怎样确保尺寸线不要随着对齐标注原点的变化而移动。但我想除了修改对齐标注的原点外,好像没什么办法了吧,不知道我想歪了没有,急需高手指点!谢谢!
发表于 2005-4-19 10:25:00 | 显示全部楼层
天正建筑没有用过,所以不知道你到底是什么意思。


其实,你可以放两张图片在这里,大家就清楚你的目的了。
 楼主| 发表于 2005-4-19 22:23:00 | 显示全部楼层
只要是画过图的就知道什么是修剪对齐标注尺寸界线,希望各位老大帮帮忙啊,我真的好困惑啊!
 楼主| 发表于 2005-4-20 22:10:00 | 显示全部楼层
我真的好困惑,我见过很多人用lisp编过,但我不会lisp,所以想请有经验的人给个提醒也好,到底怎样修剪[U]对齐标注[/U]啊?
发表于 2005-4-21 07:07:00 | 显示全部楼层
对齐标注的定义以前已经说过。
要修剪就必须两条尺寸界线一起修剪,而且修剪的长度必须相同,否则它就会动。
发表于 2005-4-21 10:27:00 | 显示全部楼层
明总,dimaligned的两条尺寸界线,修剪长度肯定是相同,要不然两个extlinepoint之间的长度不是变了,但就算是修剪相同长度,它还是会变,而且尺寸越小,修剪越长,变的位置越明显。
 楼主| 发表于 2005-4-21 10:58:00 | 显示全部楼层
楼上的说得对,这正是困惑我很久的问题,明总,我见过其他人编的lisp程序,我虽然不会lisp,但我看他们好像用到旋转标注,但我要修剪的是对齐标注,跟旋转标注好像没关系的啊?希望你能指教一下,万分感谢!
 楼主| 发表于 2005-4-21 19:50:00 | 显示全部楼层
(princ "\ndmtr2=====dim trim 剪齐dim边界线---v2 终结版----------lxx.2002\n")
;;;
(defun c:dmtr2 ( / pt1 pt2 ss i ent entl p10 p13 p14 ptt np14 np13)
(princ "\ndmtr2=====dim trim 剪齐dim边界线--v2 终结版-----------lxx.2001")
(command "_.undo" "be" ^c )
;;;
(defun *error* (msg) (print msg)(command "_.undo" "e" ^c)(setq *error* nil))
;;;
(setq pt1 (getpoint "\n定义修剪界线 (只处理相交的dim),起点:")
pt2 (getpoint pt1 "\n终点:")
ss (ssget "f" (list pt1 pt2) '((0 . "DIMENSION")) )
pt1 (trans pt1 1 0)
pt2 (trans pt2 1 0)
i 0
)
(repeat (sslength ss)
(setq ent (ssname ss i)
entl (entget ent)
p10 (cdr (assoc 10 entl))
p13 (cdr (assoc 13 entl))
p14 (cdr (assoc 14 entl))
;;ptt (cdr (assoc 11 entl));;文字定位
i (1+ i)
pt1 (polar pt1 (angle pt1 pt2) (/ (distance pt1 pt2) 2) ) ;;变为pt1 pt2的中点
pt2 (polar pt1 (+ (/ PI 2) (angle p10 p14)) 100)
np14 (inters pt1 pt2 p14 p10 nil)
)
(if (not(member '(100 . "AcDbRotatedDimension") entl)) ;;如果不是linear类型
(setq np13 (polar np14 (angle p14 p13) (distance p14 p13)))
(setq np13 (inters pt1 pt2 p13 (polar p13 (angle p14 p10) 100) nil)) ;;else;;align类型
)
(setq entl (subst (cons 13 np13) (assoc 13 entl) entl)
entl (subst (cons 14 np14) (assoc 14 entl) entl)
)
(entmod entl)
);end repeat
(command "_.undo" "e" ^c)
(setq *error* nil)
(princ)
)
以上是我拷别人的,什么意思啊?思路是怎样的呢?用vba怎样实现呢?谢了!
发表于 2005-4-21 21:30:00 | 显示全部楼层
你还是把你的程序和图形传上来调试。
 楼主| 发表于 2005-4-21 22:13:00 | 显示全部楼层
各位试试这个修剪对齐标注的程序吧,这用vba怎样实现呢?帮我翻译成vba行吗?谢谢各位老大啦!我想问的就是:实现这个效果到底是不是修改对齐标注的原点就可以,怎样确保尺寸线不要随着对齐标注原点的变化而移动。但我想除了修改对齐标注的原点外,好像没什么办法了吧,不知道我想歪了没有?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 18:43 , Processed in 0.194461 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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