activex aut omati on技术是微软制定的一套标准 ,使用这个标准可以使用不同语言开发的软件构件在网络环境中相互操作 ,它允许通过外显的对象由一个 windows应用程序控制另一个 win2dows应用程序 , cad可以调用 cam的对象 , cam也可以调用cad的对象。activex aut omati on被称为第四代开发工具。 (第一代开发工具 - aut olis p;第二代开发工具 - ads ;第三代开发工具- visuallis p、 arx;第四代开发工具 - activex aut omati on[ 1 ])。
同其他三代开发工具相比 ,activex aut omati on提供了大的灵活性和开发效率。它无需相关的控件的帮助 ,无需编写复杂l isp或 c语言程序 ,而是以对象的方式把 aut ocad的强大功能直接提供给应用程序 ,既大大降低了开发工作量 ,又增强了系统的集成性、 对各种不同版本的适应性和可维护性。aut ocad的 ac2tivex aut omati on技术的出现 ,标志着 aut ocad的二次开发技术取得了历史性转折。首先 ,它**实现了 ole aut omati on ,使得其他软件可以方便地访问 aut ocad ; 其次 ,aut ocad*实现了面向对象的开发技术 ,用户可以操纵它提供所有的 aut ocad对象;后 ,基于 activex aut omati on开发技术的开发工具得到*的膨胀 ,已不再局限于 c及 c + +系列语言 ,用 visual basic ,del phi等工具都可以进行开发 ,本文介绍基于 visual basic和 ac2tivex aut omati on技术开发 cam系统的过程。
1 cam系统总体实现的方法
基于 visual basic和 activex aut omati on技术 ,我公司已经开发出了汽车纵梁冲孔生产线 cam系统、 tp80型数控液压板料冲孔机 cam系统、 数控冲床通用 cam系统等 ,各种 cam系统的功能虽然千差万别 ,但总体实现的方法类似。下面谈谈 cam系统实现的通用方法。
增加菜单项以实现 cam图标 ,用 vba编写接口 ,使图标与activex控件相连 ,用 vb编写类生成 dll,它是以 vb类的形式提供的开发接口 ,可用于定义模型的几何、 窗体 ,拓扑以及实现其他功能。在应用中 ,可直接通过类的公共 ( public)数据成员和保护( pr otected)数据成员以及成员函数 (member functi on)与 acis相互作用。开发者也可以根据特殊的需要从 acis类派生出自己的应用类 ,类接口在各版本中可能有变化 ,终把菜单、 vba工程、dll、 各种文档都封装在 set up中 ,可以安装在 aut ocad2000、2002、 2004、 2005、 2006、 2007中。示意图如图 1:
首先创建一个 cam系统图标菜单 ,编写脚本 ( scri p ts) j mcar .mns,在 aut ocad使用工具 → 自定义菜单 →\jmcar. mns加载 ,把 cam菜单加载到 aut ocad系统中 ,以便用户像点击 aut ocad的图标一样点击 cam图标。第二步用 vba编写 j mvb1 . dvb工程 ,用于调用 dll工程中类的成员 ,第三步中使用 visualbasic6 . 0创建工程 ,包括各种窗体、 模块、 类、 过程、 函数和各种功能模块 ,并编译成 dll工程 ,以备 vba调用 ,该部分的工作量大约占整个开发总量的 90%以上。后集成打包封装形成 set up安装文档。以汽车纵梁冲孔生产线 cam系统为例 ,其流程图如图 2:
2 cam开发中技术要点
从图 1 cad /cam系统示意图可以看出 ,开发过程有四步 ,分别是图标菜单文档的编写、 vba工程的创建、 dll工程的创建设计和整个系统的集成 ,第一步图标菜单文档的编写和第二步 vba工程的创建韩学军已在“ 汽车纵梁冲孔数控生产线自动编程系统activex aut omati on技术的应用 ” 一文中介绍 (详见《cad /cam与制造业信息化 》 2006年 12期 ) ,本文不再赘述。这里主要介绍第三步 dll工程的创建设计中的要点问题。
2 . 1 visual basic 6 . 0工程的引用
动态链接库中存放了所有 windows应用程序可以共享的代码和资源 ,这些代码或函数可以用多种语言写出。visual basic利用这些技术可以调用任何语言产生的 dll,也可以调出 windows应用程序接口 (ap i )函数 ,以实现 s dk所能实现的功能。对象的链接与嵌入是 visualbasic访问所有对象的一种方法。利用 ole技术 ,visual basic将其他应用软件作为一个对象嵌入到应用程序中进行操作 ,也可以将各种基于 windows的应用程序嵌入到 visu2al basic应用程序中[ 2 ]。
在“ 引用 ” 对话框中 ,选择 activex部件的名称 ,它包含在应用程序的对象中。可以使用“ 浏览 ’ ’ 按钮来搜索包含所需对象的类型库文件。类型库可以有. tlb或. o1b扩展文件名。可执行( exe)文件与动态链接库 (dll)也可以提供类型库。在应用程序中 ,在使用对象的属性、 方法和事件之前 ,必须先声明对象变量 ,然后将对象引用赋予该变量。如何赋值对象引用取决于两个因素:
一、 该对象是顶层、 外部可创建对象 ,还是从属对象。对于外部创建的对象的引用 ,可以直接赋值 ,而对从属对象的引用则间接赋值。
二、 activex部件是否提供类型库。activex部件的类型库包含部件提供的全部对象的定义 ,包括全部可用的方法、 属性和事件的定义。如果 activex部件提供类型库 ,在使用库的对象前 ,需要在 visual basic工程中添加一个对类型库的引用。如果对象是外部可创建的 ,可在 set语句中用 new关键字、createobject或 get objet从部件外面将对象引用赋予变量。如果对象是从属对象 ,则需使用高层对象的方法 ,在 set语句中一个对象的引用[ 3 ]。
缺省的引用有四个:
visual basic for app licat ons
visual basic runti me objects and p rocedues
visual basic objects and p rocedures
ole aut omati on
根据各个不同版本增加四个引用:
对于 2007来说
aut ocad 2007 type library
aut ocad /object obx commom 17 . 0 type library
对于 2004, 2005, 2006来说
aut ocad 2004
aut ocad /object obx commom16 . 0
aut ocad focus contr ol for vba type library
micosoftactivex data objects 2 . 1 l ibrary
对于 2000, 2002来说
aut ocad 2000
aut ocad focus contr ol for vba type library
aut ocad /object obx commom 1 . 0
micosoftactivex data objects 2 . 1 l ibrary
2 实现 vb与 aut ocad之间的链接
aut ocad的所有对象可组成一个层状结构 ,其高层是 ap2licati on对象 ,其它对象都是 app licati on对象的子对象。对象层中每个子对象都有属于自己的子对象。为了获得某个特定的对象 ,必须从 app licati on对象中对各层子对象进行遍历查询 ,到找到该特定对象 , app licati on对象是 vb应用程序与 aut o2ad之间链接的关键。只有通过 app licati on对象才能获取参数、 文档集、 菜单栏、 菜单组。将 app licati on对象与 aut ocad之间行链接是实现 cam与 cad连接的第一步。
对于 2007来说
private sub form_load ( ) ’ 连接至 aut ocad图形
on err or resume next
di m acadapp asacadapp licati on
set acadapp = get object ( , aut ocad. app licati on . 17 )
i f err then
err . clear
set acadapp = createobject ( aut ocad. app licati on . 17 . )
i f err then
msg box err . descri p ti on
exit sub
end i f
end i f
set acaddoc = acadapp. activedocument
end sub
对于 2004, 2005, 2006来说
private sub form_load ( ) ’ 连接至 aut ocad程序
on err or resume next
di m acadapp asacadapp licati on
set acadapp = get object ( , aut ocad. app licati on . 16 )
i f err then
err . clear
set acadapp = createobject ( aut ocad. app licati on . 16 )
i f err then
msg box err . descri p ti on
exit sub
end i f
end i f
set acaddoc = acadapp. activedocument
end sub
对于 2000, 2002来说
private sub form_load ( ) ’ 连接至 aut ocad图形
on err or resume next
di m acadapp asacadapp licati on
set acadapp = get object ( , aut ocad. app licati on )
i f err then
err . clear
set acadapp = createobject ( aut ocad. app licati on . )
i f err then
msg box err . descri p ti on
exit sub
end i f
end i f
set acaddoc = acadapp. activedocument
end sub
2 . 3 在模块中定义全局变量 ,获取 aut ocad信息在模块中定义 aut ocad应用程序和 aut ocad文件public acadapp asacadapp licati on ’ cad应用public acaddoc asacaddocument ’ cad文件用户可以根据屏幕选取图形、 可以根据图层选取图形 ,也可以根据某些条件过滤掉某些图形元素 ,下面的过程是根据屏幕选取图形放入选择集中 ,然后把图形元素放入动态数组中 ,放入动态数组中的目的是由于在选择集中处理数据比较慢 ,而在动态数组中处理数据的速度比较快。笔者做过一个试验 ,在一个有 40个图素的图形文件中 ,用选择集处理数据需要十分钟 ,而用动态数组处理需要 10秒。
public sub aut ogetdata ( ) ’
di m ias i nteger, k as i nteger, ic as i nteger, lngcount as intege
di m entasacadentity
di m sset objas acadselecti onset
di m objents ( ) ’ 定义动态数组
on err or goto ccc1
ic = acaddoc . selecti onsets . count ’ 选择集的个数
i f ic > 0 then
for i = ic - 1 to 0 step - 1
set sset obj = acaddoc . selecti onsets ( i)
i f sset obj . name = ssss then sset obj . delete ’ 存在该选择集删除它
next
end i f
set sset obj = acaddoc . selecti onsets . add ( ssss )
sset obj . select onscreen
lngcount = sset obj . count ’ 选择集的图元个数
i f lngcount > 0 then
redi m objents (0 to lngcount - 1) ’ 定义放实体的动态数组
for ic = 0 to lngcount - 1 ’ 把选择集的图素放入实体数组中
set objents ( ic) = ssset obj ( ic)
next
end i f
ssset obj . delete
end sub
objents数组中存放了从屏幕上获取的所有图素。
2 . 4 向图形数据库添加 cam图形数据
图形设计可以运用 pro /engineer,ugii , i - deas, euclid - is,
cati a, solidworks, sigraph等 cad软件直接设计绘制 ,通过dxf、i - ges、 dwg格式放入 cad和 cam的一体化系统 ,也可以用 aut ocad直接绘制。对于不同的 cam系统 ,向图形数据库添加的 cam图形数据也不同的 ,以 tp80型数控液压板料冲孔机为例 ,需要向图形数据库中加入板材信息、 夹钳信息、 模具信息、 行程信息、 重定位信息、 模拟演示信息等等 ,然后根据从 cad图形数据库中获取的数据添加模具信息 ,该功能可以通过添加块实现 ,块的属性可以带有 cad信息 (如圆的圆心坐标点、 圆的直径 ,层、 线型、 颜色等 )和 cam信息 (刀具号、 刀具的直径、 工位号、 冲压类型、 重定位区域等 )。
自动排刀的算法:首先建立刀具库 ,并提取刀具信息如:圆刀的直径 ,其他刀具的长、 宽、 面积、 角度 ,刀具名称等 ,设置正公差和负公差的范围 ,以便进行匹配刀具。第二步从 aut ocad中提取图形信息放入选择集中 ,并把圆孔、 长方孔、 长圆孔、 特殊孔四种筛选出来 ,去除板材线 ,尺寸线 ,文字等 ,第三步从选择集中取一个图素 ,判断该图素的类型 (上述四种 ) ,根据图素的类型进行相应的处理。
利用循环原理 ,把实体数组中的图素全部处理后 ,在 cam层上就自动把合适的刀具适配上了 , cam图形为了区别于 cad图形 ,以特殊的颜色显示 ,放在层上 ,以便于后续处理。由于篇幅所限 ,在这里只能给出程序框图图 3。
2 . 5 优化
tp80型数控液压板料冲孔机采用直列式模具库 ,它的换模速度比较快 ,一般采用路径优化然后再进行模具优化的原则。它采用了夹钳硬件自动避让的方式 ,软件中不考虑夹钳死区的避让问题。
该优化方法采用分组方式 ,每两米为一组 ,每组内先按模具优化 ,相同模具按冲点的 x值 +所用模具的偏移值的距离进行优化 ,相同模具并且 x值 +所用模具的偏移值也相同的冲点按 y值+所用模具的偏移值的距离进行比较 ,再按所有优化路径进行比较 ,选出一个路径生成 nc代码。
设计模拟演示、 生成 nc程序等模块把菜单、 vba工程、 visu2al basic编译后形成的 dll、 各种文档都封装在 set up中。activex dll的注册与开发平台无关 ,在一种编程语言中开发出来的 activex dll,几乎不作任何修改 ,便可以在另一种编程语言中使用。一般注册 vb6 . 0 activex dll的方法有很多种 ,这里只介绍手动注册和自动注册:
(1)使用 regsvr32 . exe程序对 vb activex dll进行注册。
(2)安装过程中的自动注册。
tp80型数控液压板料冲孔机自动编程 cam软件采用的是
安装过程中的自动注册。主图标菜单如图 5:
3 结论
利用计算机图形交互界面 ,采用二维模拟技术及面向对象的程序设计方法 ,以 vb和 activex aut omati on技术 ,设计 tp80型数控液压板料冲孔机 cam系统 ,对刀具的刀具轨迹进行模拟 ,直观、 快速、 正确地验证数控代码 ,且操作简单、 方便 ,提高了数控液压板料冲孔机的工作效率。该开发思路还可以用于数控冲床、 数控车床、 数控铣床、 加工中心、 激光切割机、 等离子切割机等数控加工设备 ,以起到节能降耗、 降低成本、 落实科学发展观 ,建设节约型社会、 向绿色金属加工迈进的作用。目前该系统已经应用在汽车纵梁冲孔生产线和各种数控液压板料冲孔设备中 ,用户满意度较高 ,使用效果比国外同类软件要好。
本文由 伯特利数控文章 整理发表,文章来自网络仅参考学习,本站不承担任何法律责任。
加工中心专业制造
转轮除湿机为何需要制冷?
温泉钻井怎么更省钱
温湿光记录仪管理云平台主要功能
土壤酸度计参数/使用介绍
实验台的种类有哪些
VB6. 0与 ActiveX Aut omati on技术开发 CAM的分析
2吨实验室污水处理设施
污水流量计为何广泛用于环保行业
催化剂评价装置的这几大特性你都了解吗?
大型外墙砂浆岩棉保温板设备生产步骤
耐腐管道泵的安装、使用、维修
水滴角测量仪选购注意事项及其关键技术要点
聚氨酯保温管施工中要注意什么?
低温安全阀的作用及其操作介绍
发动机滑动轴承的损坏原因分析
ETCR9000B无线高低压钳形电流表功能特点
不锈钢一片式球阀出现问题的校正方法
LANDEFELD阀门
氰化法提金树脂的系统介绍与设备领域
DN133*4.5聚氨酯保温直埋钢管价格介绍