AutoCAD自动生成孔系坐标表
- 文件介绍:
- 该文件为 doc 格式,下载需要 10 积分
- 自动生成孔系坐标表
一个很好的用在AUTOCAD上的二次开发软件,自动在图纸上形成孔系坐标表自动生成“孔系坐标表”
江苏春兰机械制造有限公司 赵大庆
一、问题的提出
在模具设计中时常与孔系打交道,如螺钉孔、水道孔、型销孔、凹模圆孔等。在二维绘图中,对于孔系的标注,大家的习惯不一,有的采用传统的标注方式,孔少时还比较有效,孔多时就会有标注线条纵横或极其临近的情况,给工人识图带来麻烦,并且极易出错。通过改进,有人采用了坐标标注,将基准设为UCS原点后,直接在孔的圆心处的X、Y方向各引出一条短线分别注上圆心的X坐标值,Y坐标值,这种方法对工人的识图有了一定帮助,但不够清爽,特别是孔间距较密,孔大小相差不大易混淆时,又可能造成工人辨别错误。
随着模具制造业的不断发展,孔加工靠传统手工划线,然后钻、铰、镗成型的低速低精度加工方法逐渐被自动化加工设备所代替。在当前模具业比较领先的日本等国家,一般采用数控机床进行加工。这要求孔系的坐标最好能以表格形式给出,这样操作工将孔系坐标的数据输进机床控制系统,即可自动进行加工成形。由于减少了工人识图的时间,并充分利用机器的自动化,孔系的加工效率可以比以前提高10倍以上,并最终大幅度减少了模具加工成本。这在我厂生产的南京春兰汽车的冲模中得到了充分体现。
手工填写坐标表是一项繁重乏味的工作,大大增加了设计人员的工作量,并且设计人员对每个孔的坐标都要保证其正确性,增加了设计难度,因而造成加工车间要求采用孔系坐标表,而设计人员感到苦不堪言。如何将设计人员从繁重手工劳动下解放出来?这就成了我们的研究课题。我们利用AutoCAD R14版中的Automation接口,借助VB,编制了下述自动生成“孔系坐标表”的程序。
二、程序主体
下面讲述程序的思路,希望能给大家抛砖引玉,对于Automation的知识,请查阅有关书籍或AutoCAD R14的帮助。
1.初始化应用环境
初始化的过程是保证AutoCAD R14已打开,并对才AutoCAD R14创建引用的过程。
1)首先要判断当前AutoCAD R14是否已打开。
如未打开,则启动AutoCAD R14
2)创建引用。
如已打开,则将对AutoCAD程序的引用交给变量Acadapp(注:AutoCAD不允许对其进行直接操作,只能通过引用或替代来进行操作)。
Public acadApp as Object
‘声明对象变量acadApp
Set acadApp=GetObject(,”autocad.application”)
’将对AutoCAD的引用权交给acadApp
If Err Then
Err.Clear
Set acadApp=CreateObject(autocad.application)
‘如果当前AutoCAD R14未打开,将引发错误。
‘错误的处理办法是打开一个新的AutoCAD R14
‘并将其引用权交给acadApp变量。
If Err Then
MsgBox Err.Description
Exit Sub
End If
End If
‘如果上述处理无法解决问题,可能是机器中未
‘装AutoCAD R14,这时给出错误代码,并退出程序。
2. 与用户交互,获取必要的创建信息
1)图形坐标原点的位置(即基准角的位置)
2)孔系坐标表的创建模式:自动或手动?
自动模式:仅需选中孔系中的任一孔,则程序将自动将
同孔系的孔搜寻出来。
手动模式:适于有选择地创建孔系坐标。手动选取一组圆,
程序将选中的圆与第一个选中的圆作比较,并
自动剔除不同的圆。
一般自动模式就可满足实际的需要。
3)孔系是通孔、螺孔还是销孔、沉孔?
程序根据此信息创建孔系坐标表的标题。
4)该孔系圆心的前缀
为了区别于其他的孔系,孔系圆心处都要注出一个简短的标识。该标识由前缀和该圆心在该孔系中的序号组成,如 X-1,C-12等,其前缀分别为X,C。
5)指出孔系坐标表要放置的位置(即表的左上角的位置)
Prompt1$=vbCrLf+”请指定坐标原点:”
Prompt2$=vbCrLf+”孔系坐标表的创建模式:Auto/Manual:”
Prompt3$=vbCrLf+”孔系类型:1. 通孔 2.螺孔 3. 销孔4.沉孔<1>:”
Prompt4$=vbCrLf+”请指定孔系圆心的前缀:”
Prompt5$=vbCrLf+”请指定孔系坐标表左上角的放置位置:”
‘将提示赋给变量
Public acadDoc as Object
Public UtilObj as Object
Set acadDoc=acadApp.ActiveDocument
‘将对当前图形的引用权交给变量acadDoc
Set UtilObj=acadDoc.Utility
‘将当前图形的Utility属性赋给变量UtilObj,用
‘于交互输入
‘1. 获取坐标原点
Dim orgPnt
OrgPnt=UtilObj.GetPoint(,Prompt1)
‘2. 获取创建模式...