----系统变量的使用、截获鼠标消息、自定义实体知识 做机械制图的同学可能经常遇到这样的问题,装配图或者零件图的某一部分经常需要局部放大。出图时也需要出在同一张纸上。如果不涉及标注,可能并没有太大的问题,但常常不得不处理标注的比例。Auto CAD标注时可以选择自动测尺寸标注,这样当改变标注线位置时标注的尺寸数值自动变化。如果不是自动测尺寸,而是强行输入一个数值字符串,那么如果尺寸线位置变动(比如你改变设计尺寸),标注数值是不变化的,这不符合客观情况。 在同一张图上标注不同比例的实体时,虽然作为Auto CAD实体,他们的大小是不一样的,但作为实际设计模型,尺寸是一样的,不过是局部放大显示罢了!假如使用自动测尺寸,照顾了原图就照顾不了放大图,必须有一个图是使用不自动检测尺寸,这对改图又改尺寸标注是很不方便的。如果开不同视窗,又会涉及到文字比例问题,因为图放大了文字也放大,而实际需要的是图放大而文字不放大。5 i( [' b( T& H' }' `& q
解决这个问题有一个方法可以参考,就是使用DIMSCALE系统变量控制,例如,我们需要将原图一部分局部放大10倍,原图标注尺寸是150的地方,在放大图上也是150,虽然图变大了10倍,绝对不会检测成1500, 我们只要在标注时将DIMSCALE系统变量设成0.1就可以了。 改变系统变量固然可以解决尺寸自测问题,但是,DIMSCALE变量是全局的,他将影响以后所有的标注,如果在实际操作时反复切换这个变量,又为绘图添加很多新的麻烦,所以,下一步就是考虑如何自动切换标注比例问题。+ W$ g7 c! A4 T d- V3 m
以笔者的成功范例,采用下列方式达到自动切换标注比例的功能,只要指定了一个矩形框,确定在此框内的比例,以后凡是在此框内绘图都自动设置DIMSCALE变量,在框外绘图标注比例会设回去。 第一 : 截获Auto CAD鼠标按键消息;重新编制窗口处理过程,采用SetWindowLong将此过程附加到Auto CAD绘图窗口。
4 A2 y, _, P. \: p 第二 : 在窗口处理过程里面判断鼠标的位置,是否落在规定的矩形框内,如果在则改变系统变量。
8 o4 O3 {' u+ o4 b+ k 第三 : 为了记录特定的矩形框位置,设计了一个新实体,新实体可以显示可以隐藏,可以移动、缩放,但不能随意删除,必须用指定的命令才可删除,如果使用Auto CAD命令删除它,在存盘时可以恢复,并设为隐藏状态,新实体的一个重要属性就是标注比例,可以随时改动,并影响框内所有实体。
3 V0 u0 Y& Y) y$ ~8 g 综上所述,采取这几个简单的技术,就实现了在同一张图上自动实现不同的标注比例,有关截获鼠标消息、自定义实体以及程序源码等等细节,将在后期推出。 |