qingbo9818 发表于 2012-5-16 09:12:44


单元九:外围式尺寸线布局

在上个单元,我们的程序已经能去除重复的坐标信息,接着要尝试的是将尺寸线全部标注在图形外。三维,cad,机械,技术,汽车,catia,pro/e,ug,inventor,solidedge,solidworks,caxa,时空,镇江" W- l4 p& s/ K7 @

一:尺寸线拉至外围
更改尺寸线标注时的位置,使所有尺寸线拉至外围,由于这时图面所有的尺寸线将集中于图形四周,所以很容易遇到尺寸线重迭的问题(如图)。三维网技术论坛) g" [% a, H* }; v
http://www.3dportal.cn/discuz/attachments/month_1001/1001220917db66918fc93f1537.png

三维网技术论坛* G5 N8 C) a- G& {h8 K/ j
解决尺寸线重迭的方法有很多种,在这里我们利用记录上个尺寸线的位置,并判断接下来要标注的尺寸线是否有足够空间与上个尺寸线隔开,若无足够空间,则往某特定方向移至有足够空间出现。三维网技术论坛: q% H% L9 k# C2 X

二:尺寸线空间
要达到上述的方法,除了要将标注位置「顺着」移到最外围外,首先还必须对要标注的坐标位置排序,使其依照某个方向找寻适合的空间位置标注尺寸线,为延续这整个主题所采用的「放射状」原则,排序的方式就是与中心点位移的距离作为依据,由中心往两边找寻适合的标注空间。而所谓足够的空间,则是以相邻尺寸线的间距是否大于或等于尺寸文字高度加上两倍尺寸文字与引线距离作判断。三维网技术论坛. x$ s' m; O) p. Z

三:尺寸线偏移问题
从第一单元以来,都是使用「顺着」方式标注,所以在标注尺寸的阶段,可以直接采用 AutoCAD 自行判断所标坐标为 X 值或 Y 值,但本单元的标注已不再是单纯的「顺着」方式,为找寻适合的尺寸线空间,尺寸线对象有可能会作某些程度的偏移,而 AutoCAD 的自行判断可能会与我们的预期不符,这时在标注阶段就有必要指定所标坐标值是 X 值或 Y 值了。www.3dportal.cn5 R. J3 f) U4 L2 F+ [: F$ u

http://www.3dportal.cn/discuz/attachments/month_1001/1001220917618c6394c78573f9.png www.3dportal.cn% E3 F) O9 W5 \3 k
www.3dportal.cn/ q8 a# \3 {# Y! l7 k& ?
上述两部分的程序代码原理不难(就是上面所述),但是繁杂,所以就不在文章中作说明,有兴趣者请直接参考原始码。

完成后,其程序运作如下图所演示:三维网技术论坛# y( Q; A& g& M. J) L; p
http://www.3dportal.cn/discuz/attachments/month_1001/100122091737b771894149054f.gif & \- ~$ v- F8 c: r9 R
三维,cad,机械,技术,汽车,catia,pro/e,ug,inventor,solidedge,solidworks,caxa,时空,镇江" v1 A# e+ IJ- g/ @) R" `" I) @
三:重复标注的讨论三维|cad|机械|汽车|技术|catia|pro/e|ug|inventor|solidedge|solidworks|caxa. O9 w; q1 o$ A. H( x1 }
这个单元与上个单元的程序主要重点在去除重复标注,使整体图面看起来更加清爽,而这真的有比较适合实际作业所需吗?虽然每一个位置在图上都能找到对应的坐标值,但当所有尺寸线接标注于外围时,纵使尺寸线没有迭在一起,对于比较密集的地方,还是有些读图上的不方便,而另外一点,不管是否将尺寸线拉至最外围,同样都会有些位置的坐标值信息离开本体太远的问题,对于实际加工时,必须花些精神集中注意在找寻其坐标值,不尽理想;但若不去除重复坐标,将每一个坐标通通标注,又会有同一位置重复标注问题,比如带中心线的圆,所以该如何取舍哪些坐标需要过滤而哪些又要保留是自动标注的另一个课题。

/ Tj% V# F4 t8 `: B& I% T- f5 y
http://www.3dportal.cn/discuz/attachments/month_1001/10012209174fd57bc46bdf28e6.png 三维网技术论坛# p/ @5 M* S) i- |8 l; `$ n6 N4 D* I

完整程序代码,加载后,输入 ac-autoDim 即可使用

www.3dportal.cn. W; Z: ^3 \$ [$ j/ j
下载座标示自动标注尺寸完整程序代码(单元九)

http://www.3dportal.cn/discuz/images/attachicons/zip.gif autoDim09.zip (2.11 KB) www.3dportal.cn6 B+ L! U! F" S; w

本程序与技术原理由「Salt 莱昂运算股份有限公司」提供,转载请注明出处,谢谢。
未完待续……三维网技术论坛& b3 M. e+ a. t0 y/ pQ# i4 c

qingbo9818 发表于 2012-5-16 09:14:39


单元十:非正交直线三维网技术论坛8 j# m+ z+ U/ u( R, U3 a6 N! h: B. j

到目前为止,我们都一直忽略非正交直线,原因在于由最初的图面分析,发现只要标注正交直线就可标注出整个工程图的八、九成了,而又可避开重复标注问题,并且也能使整个图面全部采用单纯的「顺着」方式来完成标注。但程序探讨至此,我们已能过滤重复标注,为使程序更加完整,本单元开始处理非正交直线。
7 D( s$ ]& W" W' k
一:「顺着」标三维网技术论坛: \8 p3 PX- n6 q2 V4 f* U
非正交直线不若正交直线只要「顺着」标就可以自然带出所需的 X 或 Y 坐标值,所以必须将它当成不带中心线的圆一样处理,而与圆不同的是,直线有两个端点,所以得把非正交直线的两个端点视为两个圆来处理。三维|cad|机械|汽车|技术|catia|pro/e|ug|inventor|solidedge|solidworks|caxa* X9 s8 ?% M6 }" F/ e7 ^
e7 l$ r5 g: A6 S
二:角度标注
既然是自动标注程序又开始处理非正交直线,那非正交直线的倾斜角度是否也要一并标注呢?
事实上角度标注牵涉到加工时基准面的问题,这都得视工件的设计或与其他零件的相对关系而定;另一方面,图面上的非正交直线不见得都是需要精准标出的斜面,有些可能是某种加工记号或是习惯倒角,标出这些特征的角度并非合理。
不过基于探讨自动标注,我们还是大致研究一下角度标注。
www.3dportal.cn& l! ]* z7 Z* \8 _1 \
http://www.3dportal.cn/discuz/attachments/month_1001/100126151579682fffb970ba52.png 三维|cad|机械|汽车|技术|catia|pro/e|ug|inventor|solidedge|solidworks|caxa0 i* q' e$ ^7 ~& x+ h

三:标注空间寻找
在这里我们简化角度标注的样式,直接使用引线来描述角度,并忽略基准面问题,将角度缩减成45度角内,标注位置则是在直线两边选择有较充裕空间摆下标注文字的那一边。三维,cad,机械,技术,汽车,catia,pro/e,ug,inventor,solidedge,solidworks,caxa,时空,镇江/ p+ D1 ~% E% `! K/ q# n
为判断哪一边才有足够空间,首先必须知道我们即将标注的文字所占空间大小,这部分可以利用 lisp 的 textbox 函式达到目的,但要注意此函式的根据判断是当前的文字型式与文字字高,与尺寸线文字的型式与字高不见得相同,若要精准判断,必须将目前的文字型式与字高设为与尺寸线的文字型式与显示字高相同,并在程序结束后,返回原先的设定值,但在这里就不再占篇幅讨论文字型式的取得与改变,先将它们当作是一样的,为求程序的原理清楚,程序里也只对字高作些必要调整。D- i7 W. v/ @$ x- b
三维网技术论坛& R9 ]& U2 n: I8 A
http://www.3dportal.cn/discuz/attachments/month_1001/1001261515c16d8e6c9c577444.png : m0 Q9 K/ X( e6 R3 |- t& t

其他为简化程序,我们在标注时将 DIMTAD 系统变量设为 0,使文字与引线对齐在中间高度,这样程序在判断文字空间时,就不用再考虑文字与引线间的距离。三维网技术论坛! r5 8 V4 f* m' o% w8 F
三维,cad,机械,技术,汽车,catia,pro/e,ug,inventor,solidedge,solidworks,caxa,时空,镇江0 P4 v1 U) w8 Q, k3 f& t0 g
http://www.3dportal.cn/discuz/attachments/month_1001/10012615156469cda6c2c52bf4.png 三维|cad|机械|汽车|技术|catia|pro/e|ug|inventor|solidedge|solidworks|caxa3 D0 V! w$ _2 R, E
三维网技术论坛6 ~% Z/ q: M2 Y; W6 j3 b) r6 p- h
有了文字所占空间的大小信息后,我们利用 lisp 的 ssget 函式,抓取空间内的对象,比较直线两边将来要摆文字的空间内的对象多寡,来决定将角度标注于哪一边。

四:程序代码三维网技术论坛$ v- J% H% h( n8 }: C" E
本单元的程序代码与上个单元大致相同,只增加对非正交对象的信息处理,并在最后将所有的非正交对象标上角度批注。
主要负责角度标注的子程序为新增的 ac-dimAngle 子程序,对于这些子程序,也许有人会有这样的疑问:这些程序代码为何不藉由全局变量的妥善运用达到简化?原因是此主题目的在于说明自动标注的原理,所以程序代码部分力求每个子程序可以是容易了解的独立模块,对于程序代码未最简化与不清楚部分,还请多多包涵。
三维网技术论坛5 F$ }: `, H0 M7 V" w3 c
五:千层面
刚刚在吃前几天剩下的比萨时,意外发现快速制作千层面的方法,把比萨「迭」在方形可微波的盒子里,加热一下,就变成千层面啦。www.3dportal.cn3 h" x% }1 `2 @7 o% p! }- D. `
完成后,其程序运作如下图所演示:
三维网技术论坛1 @1 d2 A3 V; n4 r
http://www.3dportal.cn/discuz/attachments/month_1001/1001261515e275eca619bbee1f.gif 三维|cad|机械|汽车|技术|catia|pro/e|ug|inventor|solidedge|solidworks|caxa% @! G) H+ Au# o5 u

完整程序代码,加载后,输入 ac-autoDim 即可使用。三维|cad|机械|汽车|技术|catia|pro/e|ug|inventor|solidedge|solidworks|caxa( ^8 `8 V5 D. |' d; g

下载座标示自动标注尺寸完整程序代码(单元九)三维网技术论坛7 {) jg! |: c; i- U
http://www.3dportal.cn/discuz/images/attachicons/zip.gif autoDim10.zip (2.77 KB)

本程序与技术原理由「Salt 莱昂运算股份有限公司」提供,转载请注明出处,谢谢。三维网技术论坛6 l7 L1 E+ t. s, L& \

加油!已经接近尾声了,未完待续……





实力是一点一滴~~~累积而来...


qingbo9818 发表于 2012-5-16 09:15:41

单元十一:杂项
虽然在前几个单元的讨论里,有提到由于圆在工程图里所扮演的角色并非单纯的几何圆图形,所以直接标注圆的直径并非妥当,同理所有圆弧的半径直接标出也不适合,但如同角度标注,就学习程序目的,我们在本单元来探讨如何寻找适合圆直径与弧半径尺寸线位置的空间。
三维网技术论坛: `5 E- r: S) ]6 B; W5 P9 m! P
一:尺寸线位置
之前单元(单元五、六、七)的程序对于直径的标注位置皆是以「放射状」原则来配置,并无判断要放置的位置是否有其他对象存在,另外对于弧半径的标注,则很难符合「放射状」原则,所以此单元将放弃「放射状」原则,对圆直径的标注改采由45度角开始寻找适合位置,而弧则以弧中点位置开始到弧的两端寻找合适标注空间。

http://www.3dportal.cn/discuz/attachments/month_1001/10012711269c36ed3c6b7d2d17.png

二:程序代码/ n, rb; S8 r9 V$ E7 D
如同寻找角度标注空间,在这里也是以标注的文字大小,利用 ssget 判断对象较少的位置,当作是标注位置。( W) a* _; N& z6 c1 kG
为使此部分程序原理较清楚,我们利用单元六只标圆的程序来修改,并去除标注位置的部分。
此部分完成后,其程序运作如下图所演示:三维|cad|机械|汽车|技术|catia|pro/e|ug|inventor|solidedge|solidworks|caxa'
% A) v/ h4 B% My: e9 F
http://www.3dportal.cn/discuz/attachments/month_1001/1001271126a8d58c5498271015.gif 三维网技术论坛' J8 z1 i1 S* l9 y4 C

此部分完整程序代码,加载后,输入 ac-autoDimC 即可使用。
下载坐标式自动标注尺寸完整程序代码(单元十一之一)
http://www.3dportal.cn/discuz/images/attachicons/zip.gif autoDim06-b.zip (2.22 KB)
三维,cad,机械,技术,汽车,catia,pro/e,ug,inventor,solidedge,solidworks,caxa,时空,镇江1 _. S; B7 p; ^" b9 I

三:再整理
虽然我们一再强调圆直径、弧半径与非正交直线角度等这些特征涉及现场加工状况以及与其他零件相对关系,所以并不适合毫无过滤的全部在图面上直接标注,但在此我们还是把上述程序与单元十的程序做个结合,另外我们也把前几个单元没考虑的图块标注一并加入,由于图块在图面上通常已有其独立的完整叙述,所以图块的标注就只标注其插入点。
完成后,其整个程序运作如下图所演示:

http://www.3dportal.cn/discuz/attachments/month_1001/1001271126628a651d3c6949c6.gif
三维|cad|机械|汽车|技术|catia|pro/e|ug|inventor|solidedge|solidworks|caxa6 a, j2 T8 ~, `8 O0 a/ ]$ U
完整程序代码,加载后,输入 ac-autoDim 即可使用。三维|cad|机械|汽车|技术|catia|pro/e|ug|inventor|solidedge|solidworks|caxa" f1 R& A8 p9 }1 N! m0 o' l& m
下载坐标式自动标注尺寸完整程序代码(单元十一之二)
http://www.3dportal.cn/discuz/images/attachicons/zip.gif autoDim11.zip (3.9 KB) 三维网技术论坛9 U: n. R- s3 o. _: ]- l
三维|cad|机械|汽车|技术|catia|pro/e|ug|inventor|solidedge|solidworks|caxai1 x$ O" B% x7 h$ w7 n8 ?
本程序与技术原理由「Salt 莱昂运算股份有限公司」提供,转载请注明出处,谢谢。

未完待续……

qingbo9818 发表于 2012-5-16 09:16:32

本帖最后由 qingbo9818 于 2012-5-16 12:28 编辑


单元十二:总结www.3dportal.cnx) K3 ]$ j# _6 H
在这个单元,我们将所有的单元作个总整理。三维网技术论坛2 b: W* ]& q4 p0 j* y
( g" O/ C& o- P, o
一:圆直径、弧半径与非正交直线角度
工程图的「圆」并不是真的只是单纯的「几何图形的圆」,通常他们代表着各式各样的孔,比方说,钻孔、螺孔、梢孔、沉头孔等等,要描述这些孔以方便加工者制造工件,直接描述其几何图形并不是恰当的作法。
图面上有很多的圆弧其实代表的是倒圆弧或是长孔,而倒圆弧通常是用引线代表性的叙述一下R角多少,长孔上的圆弧标注其半径亦不适合。
非正交直线在图面上有可能只是某个加工符号的一部分或是习惯倒角,而标注这些对象的角度并非妥当,即使是需要注明角度的斜面,也存在着加工基准面的问题,直接自动标注不见得是合适的。

二:程序构思流程
有接触过 AutoLISP 开发的朋友应该不难发现这个主题内的程序都算简短,甚至会觉得说,某些部分该用 ActiveX 的方式来提申程序运行效率,或是应该要好好运用全局变量,来使得程序代码更为简洁,但考虑此主题是以说明自动标注原理为目的,所以在程序结构上尽量让各个子程序可以是容易了解的单一模块,而程序代码也以较基本的方式呈现,若是觉得有些需要修改的地方,也容易自行下手改成自己所需。
虽说程序代码很短且看似浅显易懂,但不代表这程序简单,从第一单元至最后单元都在阐述整个程序开发的构思流程,由最先的不到五十行程序就将自动标注给勾勒出来,到后面渐渐考虑各项变因,使得程序代码演变成与最初几乎完全不同的状态,这其中除了程序语言本身的学习,更重要的是要藉由参考制图学原理并探讨现场加工的实际状况以及如何将这些经验利用数学知识转化为程序语言,这些都不是简单的程序设计内容,其中包含了多方面的专业知识,并非一般初学程序开发所能体会。
总而言之,这程序没有精美的外包装,(所谓外包装,指的是漂亮的用户接口、连同标注型式一起完善的规划等等,非自动标注主要原理部分)但这个核心程序绝对是专业级的,还请各位爱护。/ b" x; ?9 A0 Y8 j3 A

三:重点程序www.3dportal.cn. M/ w4 m: q6 g+ j$ K
在这边将整个主题内的重点程序作一个整理。
最基本的自动标注(单元三) :
http://www.3dportal.cn/discuz/images/attachicons/zip.gif autoDim03(1) .zip (1.11 KB) 三维网技术论坛" f8 ^; R7 E7 ~1 t5 {7 S
只标圆位置的自动标注(单元四,推荐使用,理由:坐标式标注尺寸有极大的使用目的在于叙述各种孔的坐标,使用此单元程序可以单纯就近标注出各个孔的位置,图面较清楚明了)www.3dportal.cn! k5 D7 N) K4 |3 q6 C
http://www.3dportal.cn/discuz/images/attachicons/zip.gif autoDim04(1) .zip (1.11 KB) 三维|cad|机械|汽车|技术|catia|pro/e|ug|inventor|solidedge|solidworks|caxa( w* j: t7 a8 Z( d
只标圆位置与直径的自动标注(单元六)三维网技术论坛4 I+ Q" q0 j: x8 U- r& b4 J, n
http://www.3dportal.cn/discuz/images/attachicons/zip.gif autoDim06(1) .zip (1.52 KB) 三维网技术论坛7 t. _3 [! o; i; p( @三维网技术论坛4 _5 o* w3 u/ c1 _* |
过滤重复标注但未标圆直径的自动标注(单元八,推荐使用,理由:去除重复标注,图面较清爽。)
http://www.3dportal.cn/discuz/images/attachicons/zip.gif autoDim08(1).zip (1.6 KB)

不含圆直径外围式自动标注(单元九,推荐使用,理由:整体外围标注,图面较整齐。)
http://www.3dportal.cn/discuz/images/attachicons/zip.gif autoDim09(1) .zip (2.11 KB) 三维网技术论坛# D& Z8 ?: ^5 G8 x9 ~' z; Dwww.3dportal.cn9 W3 d3 g$ K0 C8 B* T* w5 ]
含圆直径、弧半径、非正交直线角度与图块的外围式自动标注(单元十一)
http://www.3dportal.cn/discuz/images/attachicons/zip.gif autoDim11(1).zip (3.9 KB) www.3dportal.cn0 }8 C0 {" {, {% L3 J' V1 |

三维,cad,机械,技术,汽车,catia,pro/e,ug,inventor,solidedge,solidworks,caxa,时空,镇江3 m( d3 T! s+ p% r& Z1 W. P
本程序与技术原理由「Salt 莱昂运算股份有限公司」提供,转载请注明出处,谢谢。
4 N$ b/ f6 K: S, j$ K- A/ @, }
感谢您耐心的看到最后,本主题到此单元已全部结束,谢谢。






实力是一点一滴~~~累积而来...



qingbo9818 发表于 2012-5-16 09:21:52





















crazylsp 发表于 2012-5-16 11:27:03

楼主花了大量的时间和精力做的很好!在整理的过程中不仅提高了自己,还发现了许多以前没有注意到的问题,产生了不少新的想法和认识,加深了理解,以后只要阅读一下就能随时回忆起来。做工程设计就要像这样。

cnks 发表于 2012-5-16 12:33:38

要是原创我就挺你

dz-2011 发表于 2012-5-16 12:49:49

强烈支持,核心程序绝对是专业级的!

sfzyr 发表于 2012-5-16 13:15:26

雖然早就見過此源碼與解說,但還是支持將"好貼轉發至此論壇",不過不要侵權才好

dz-2011 发表于 2012-5-16 13:44:04

说到这个自动标注,早些年前我就自已写了个,因在网上也没见过相关的源码加上自已写的也很辛苦,所以不太情愿发出来,现想想明经高手多多,也该找个时间拿出来让高手指点下下!
页: 1 [2] 3 4 5 6 7 8
查看完整版本: 坐标式自动标注尺寸原理解说【含源码】~实战大公开(转帖)