您的位置:网站首页 > CAD新闻

英国DELCAM软件的应用及二次开发

时间:2011-02-25 10:06:12 来源:

  一、前言

  PowerMILL是英国DELCAM公司开发的一款优秀的、独立的、基于知识的专业三维加工软件,其技术在同行业中居世界领先地位。PowerMILL软件的主要特点如下:

  ★ 与CAD系统的无缝接口

  现代的产业结构以及产品开发周期的缩短,极大的增加了CAD与CAM的异地化生产,这就使得CAD模型的转换成为现代生产的关键环节。PowerMILL能够接受的CAD模型类型包括AutoCAD、CATIA、CIMATRON、IDEAS、IGES、UNIGRAGHICS、PRO/ENGINEER、SOLIDWORKS、STEP、 SOLIDEDGES以及VDA等多种模型格式,很好的做到了与CAD系统的无缝连接。

  ★ 面向高速加工

  1、 智能化全程过切保护

  现代的高速加工与传统加工相比,其切削速度提高了8倍左右,更有甚者可能达到10倍以上。在这种情况下一旦有过切现象发生,其冲击力将对机床、刀具带来极大的损害,甚至对人身安全造成伤害。PowerMILL充分考虑了这些因素,采用了智能化的全程防过切处理,不需人工干预而是全部由系统自动完成。我们的实际加工证明,PowerMILL可靠性高,完全防过切,使用起来让我们特别放心。

  2、刀具过载保护

  在型腔类工件的粗加工中,刀具与工件第一刀的接触不可避免的会有全刀宽切削,这种全刀宽切削对刀具的使用寿命有很大的危害。为解决这种问题,PowerMILL给用户提供了刀具过载保护功能--摆线加工,即当发生全刀宽切削时,PowerMILL会优化刀具路径,自动以摆线加工策略进行处理,避免刀具过载。

  3、 丰富的适合高速加工的细节处理

  为了避免刀具在加工过程中走刀方向的突然变化和保证刀具切削的平稳性,PowerMILL

  允许用户采用水平圆弧、垂直圆弧、斜向等多种进刀方式,使刀具能够高速地切入切出工件,同时PowerMILL在多种策略的刀具路径的尖角处可采用圆弧光顺优化处理,这些细节处理正是高速加工所要求的

  ★ 刀杆、刀柄碰撞检查

  在实际加工中,人们总是希望采用尽可能短的刀具对工件进行加工来解决因刚性问题带来的"让刀"现象。但是在加工深腔类工件时,刀具太短,刀杆或刀柄就会与工件产生碰撞。PowerMILL为用户提供了刀杆、刀柄碰撞检查功能,而且允许用户定义多级夹持。PowerMILL不仅保证了刀具的切削刃不会过切工件,而且保证了刀杆/刀具夹持不会发生碰撞,消除了NC人员对此的忧虑。

  ★ 计算速度快

  在三维曲面的高速加工中,一般为达到较好的光洁度,编程时会采用密化加工轨迹的编程方法。由于加工轨迹的密化,造成了计算机系统的计算量非常大,在我们的一次实验中,在相同的硬件平台上,对同一工件采用相同的加工参数分别进行编程,PowerMILL的计算时间仅为其它软件计算时间的1/3。快的计算速度使操作人员能够对多种加工策略进行比较,以便采用最佳的加工方案。

  二、PowerMILL的二次开发

  任何优秀的软件,其功能也不可能满足于所有领域、所有用户的应用习惯和应用需求。为此,PowerMILL为用户提供了Visual Basic二次开发接口和开放式的内部命令集合,给用户的二次开发带来了方便。而二次开发是对软件的用户化和专业化的有效手段,这种工作虽然不可能给软件带来质的变化,但可以使软件更好地为用户服务,这对提高工作效率和工作质量有着不可低估的作用。

  PowerMILL为用户提供了两种二次开发形式: 宏指令(MACRO)和Visual Basic接口

  1、 用宏指令进行二次开发

  在PowerMILL中,宏是一组PowerMILL内部指令的集合。

  PowerMILL向用户开放其全部内部命令。用户可以将这些命令进行组合,形成宏文件,用以在PowerMILL中进行一连串的操作,给用户免去了大量的重复劳动,给工作带来方便。在PowerMILL中,可以通过菜单工具/显示命令调出命令对话框,在PowerMILL中的每一步操作所激发的内部命令都会显示在此对话框中,我们也可以在此对话框中发送命令给PowerMILL。

  对用宏指令进行二次开发的用户来说,"HELP"命令的用法是我们必须知道的。其用法是: HELP [PowerMILL内部命令]。

  ★ 在命令对话框中键入 HELP,显示所有由PowerMILL提供给用户的内部命令。

  ★ 在命令对话框中键入 HELP [PowerMILL内部命令],显示[PowerMILL内部命令]的所有选项。

  下面的这段宏,是为了输出NC程序编制的:

  EDIT NCPROGRAM PREFERENCES EXTENSION "HAFEI3" "NCP"

  DELETE NCPROGRAM ALL YES

  EDIT NCPROGRAM PREFERENCES TAPEOPTIONS FILEOPEN

  "C:dcamconfigductpostHAFEI3"

  CREATE NCPROGRAM INDIVIDUAL

  KEEP NCPROGRAM ALL YES

  其中:

  第一行:为机床选项文件HAFEI3.OPT指定NC程序的扩展名为NCP;

  第二行:删除所有已产生的NC程序并确认;

  第三行和第四行:指定机床选项文件为C:dcamconfigductpostHAFEI3.OPT;

  第五行:为所有的刀具路径产生独立的NC程序;

  第六行:输出所有的NC程序并确认。

  这样,就可以使在PowerMILL中需要很多步操作的才能完成的NC程序输出工作,只需

  一次宏调用即可完成,使操作变得简单、高效,实用。通过对PowerMILL的深入使用并结合实际的生产,编制一些复杂的宏做成模板,可以使工作效率大幅度的提高,并使用户从一些机械的、重复的按键中解脱出来。

  2、 用Visual Basic进行二次开发

  如果系统安装了PowerMILL软件,该软件就会在您系统的SYSTEM32目录下安装并注册PowerSolutionOLE.ocx控件,该控件包含了CopyCAD、PowerMILL、PowerShape等的二次开发接口。在用Visual Basic做PowerMILL开发时,应首先将PowerSolutionOLE.ocx控件调入到VB的控件箱中。方法是通过菜单"工程/部件"调出部件对话框,并选中Delcam PowerSolution OLE control。调入PowerSolutionOLE.ocx控件后,还需将PowerMILL控件加入到开发工程中(为了便于以后的论述,将此控件在PowerMILL工程中命名为Pmill),如下图所示:

  ★ PowerMILL控件的几个内部函数

  连接函数GetObject :

  用法:GetObject(, "Pmill.Document")

  功能: 建立与已运行的PowerMILL的连接,如果连接不成功,返回Nothing 。

  启动函数 CreateObject:

  用法:CreateObject("Pmill.Document")

  功能: 启动PowerMILL 。

  执行函数PMILL.Execute

  用法:PMILL.Execute

  功能:向PowerMILL发送命令。

  执行函数PMILL.ExecuteEx

  用法:PMILL.ExecuteeEx

  功能:向PowerMILL发送命令,并返回PowerMILL的输出信息

  ★ 读取PowerMILL窗体数据的方法

  做PowerMILL的二次开发,就必须能读取PowerMILL的窗体数据。读取窗体数据就需知道数据在PowerMILL中的变量名。在系统默认情况下,当鼠标停留在PowerMILL窗体部件上时,系统将显示该部件的帮助信息。但是,如果通过PowerMILL菜单 "帮助/选项"并设置显示选项为"工具名称"时,系统显示的将是该部件在PowerMILL中的变量名。我们就可以通过此变量名读取PowerMILL的窗体数据(见左图)。具体的读取方法是利用PowerMILL的内部命令PRINT FORMVALUE <窗体部件名称> 来完成的。例如读取上图窗体中的"接受"按钮的值就可以用如下语句来实现:

  TempString = Pmill.ExecuteEx ("PRINT FORMVALUE DCPD_DynamicHELP.Accept")

  ★ 二次开发的一个例子

  上图是在PowerMILL中进行的二次开发的一个执行程序的执行界面。限于篇幅,只对其中的"摆角编程"做一简要描述。"摆角编程"是为了在"假五坐标"数控铣床上实现对"有闭角"工件的数控铣加工而进行的二次开发,其功能是用下面的一段代码来实现的,方括号中的内容是对代码的解释。

  …

  Pmill.Execute "CREATE WORKPLANE ;" [生成新的坐标系]

  Pmill.GetWorkplaneList workplanesJz, ActiveWorkPlaneIndex [更新坐标系列表]

  NumOfWorkplanes = workplanesJz.Count

  ComboZdbcJzzb.Clear

  If (NumOfWorkplanes > 0) Then

  For I = 1 To NumOfWorkplanes

  ComboZdbcJzzb.AddItem workplanesJz(I)

  Next

  If (ActiveWorkPlaneIndex <> 0) Then

  ComboZdbcJzzb.ListIndex = (ActiveWorkPlaneIndex - 1)

  Else

  ComboZdbcJzzb.ListIndex = 0

  End If

  Else

  CloseMsgBox "无基准坐标系!", " 错误"

  Exit Sub

  Form1.WindowState = 0

  End If

  Pmill.Execute "ROTATE WORKPLANE '" & workplanesJz(NumOfWorkplanes) & "' X " & TextBcAj.Text

  [旋转坐标系A角]

  Pmill.Execute "ROTATE WORKPLANE '" & workplanesJz(NumOfWorkplanes) & "' Z " & TextBcCj.Text

  [旋转坐标系C角]

  Pmill.Execute "ACTIVATE WORKPLANE '" & workplanesJz(NumOfWorkplanes) & "'"

  Pmill.Execute "EDIT BLOCK RESETLIMIT " & TextMpkz.Text [设置毛坯]

  Pmill.Execute "EDIT BLOCK RESET"

  Pmill.Execute "EDIT FTOLERANCE " & TextJgrc.Text [设置加工容差]

  Pmill.Execute "EDIT FTHICKNESS " & TextJgyl.Text [设置加工余量]

  AngleA = CDbl(TextBcAj.Text)

  AngleC = CDbl(TextBcCj.Text)

  Pmill.Execute "EDIT FINISHTYPE RASTER" [设置行切策略]

  Pmill.Execute "EDIT FINRASTER STEPOVER " & TextJgbj.Text [设置加工步距]

  Pmill.Execute "EDIT FINRASTER ANGLE " & TextJgjd.Text [设置加工角度]

  Pmill.Execute "EDIT FINRASTER ARCFIT ON" [设置修圆选项]

  Pmill.Execute "MAKE FCUTTERPATHS CURRENT" [计算刀具路径]

  …

  这段代码主要演示的是如何旋转坐标系和设置加工参数。

  三、结束语

  对软件的二次开发,使我们对软件功能的理解和应用更加熟练、利于我们对软件进行更深层次的应用。在熟练掌握PowerMILL软件功能的情况下,通过对其深入研究,任何人都可以开发出适用于本单位和个人习惯的工具,为提高工作效率和编程质量服务。

  长春达尔康科技有限公司在我们的应用和开发工作中给予了非常多的支持和帮助。在赛马、中意等新车型的开发中,他们周到、及时的售后服务帮助我们解决了很多技术难题,我们的编程效率比过去使用的其它同类软件提高了50%以上,加工效率提高了30%以上,大大加快了我们新车型的上市时间