catia vba二次开发入门与提高_第1页
catia vba二次开发入门与提高_第2页
catia vba二次开发入门与提高_第3页
catia vba二次开发入门与提高_第4页
catia vba二次开发入门与提高_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

catia vba二次开发入门与提高 A CATIA VBA二次开发入门与提高作者Docker许可声明本书知识产权归本人所有,作者拥有所有权利。 本书内容向所有人开放,任何人都可以把本书内容作为一个整体进行查看、存储、复制、打印或传播。 在使用本书时,视为读者已同意遵守以下条款1.使用者不得修改本书中的任何内容。 使用者在阅读、分享过程中必须保证本书的完整性,不得拆解成多个部分传播。 2.使用者不得利用本书进行任何商业性活动,不能利用本书获取经济利益,包括虚拟的货币、积分或声望。 本书内容完全。 作者花费了大量精力完成本书内容编写、示例代码设计等工作。 如果您觉得这本书的内容对您有帮助,可以选择打赏本文作者。 您只需手机扫描下方的二维码(支付宝),就可以对作者表示赞助和支持啦,谢谢!作者自序学习CATIA VBA二次开发的关键是理解CATIA V5Automation API体系。 CATIA Automation API采用面向对象技术设计,结构严密、逻辑清晰,是一个开放易学的体系结构。 对于刚刚接触CATIA VBA二次开发的人来说,既要面临很多个全新的概念,又要掌握API中概念与CATIA数模中元素和操作的对应关系,在设计二次开发程序时难免产生一些困惑。 目前已经出版的书籍包括网上公共资源中,关于CATIA VBA二次开发比较好的资料很少,这促使我在自己工作经验的基础上写一本参考性资料,帮助那些想学习CATIA二次开发的编程者,也可以作为从事相关工作工程师的参考资料。 熟悉面向对象思想的工程师更容易看懂CATIA Automation API,在实践上需要他们有一定的CATIA建模经验,并且对MCAD软件设计思想有一定概念。 比如零件文档和实例之间的关系、几何元素和参考(Reference)之间的关系等等。 读者需要在实际经验中不断总结操作方法和经验,加深对CATIA模型各级元素与Automation API对应概念之间关系的理解。 我在工作学习期间,接触了很多质量很高的资源,如博客技术文章、书籍和开源代码等。 这些资源让本人受益匪浅。 为了支持开源和共享精神,本书内容及附加代码完全,任何人都能够方便自由地获取和使用。 本书中附带了示例程序代码,用来演示相关功能,方便读者参考和学习。 请在传播本书时连同示例程序一起打包,以方便别人使用。 示例程序不可用作商业用途,本人不保证示例代码的安全性和健壮性;使用示例程序用作商业用途造成的任何损失与作者无关。 限于作者本人工作经验有限,对CATIA V5接触的广度和深度也实属不够,本书内容难免会有不准确或错误之处,请各位读者批评指正,我会陆续更新。 反馈邮件可发送到邮箱55918928qq.。 如果读者希望分章节阅读,也可以访问作者的博客(链接如下blog.csdn./dockervba),欢迎阅读和留言。 为了精确定义产品形状,一个零件设计有可能需要成百上千次交互操作命令才完成;通常一个大型产品由几百个或者更多零部件组成,完成整个产品全数字化建模需要企业投入巨大人力和时间成本。 目前大型商业CAD系统都具有行业通用性,但所有的用户需求都是个性化的。 比如汽车厂商更关心如何高效的设计出汽车,它需要的是一个面向汽车设计的CAD系统,以提高其设计效率;而服装厂商更关心面向服装设计的CAD功能。 由于这个矛盾(或者需求)的存在,养活了中国很多家CAD软件代理公司和二级厂商。 得益于CAD软件提供的二次开发接口,这些厂商专门为各相关行业的企业提供CAD定制开发服务;部分有条件和实力的企业也有自己的二次开发团队,实现企业内部CAD功能个性化定制开发。 CAD软件功能的个性化定制,其目的是满足用户使用习惯、企业知识/标准的封装、产品数据管理等方面的个性需求,这是CAD二次开发最基本的驱动力。 使得CAD二次开发需求比较广泛的另一个原因是产品设计自动化需求。 在主流设计方法中,CAD软件的元素/特征需要自底向上建模,全新产品的数模设计从草图、点、线开始。 这就需要非常繁琐的操作步骤和大量时间才能完成一个产品数模设计。 在这个场景下,用户可能更喜欢某些元素/特征能够自动创建出来。 这里说的“自动”包含两层意思,其一是重复操作的自动化完成,其二是某些流程自动化完成。 几乎所有的CAD软件都提供了宏命令。 当用户选择“录制宏”时,用户的操作命令和数据被记录在一段程序中。 用户通过宏代码可以查看、重现被记录的操作。 更重要的是,用户可以宏更改录制的操作命令(或数据)并执行。 宏代码实现了用户操作和程序代码之间的映射,是非常有用的学习二次开发的工具。 通过以上讨论,我们可以简单给CAD二次开发一个定义。 所谓CAD二次开发,就是利用CAD系统提供的API接口进行程序设计开发,拓展原生CAD软件功能,实现CAD软件功能个性化和操作自动化。 一些CAD系统除了宏以外,还提供了深层开发模式,允许用户调用更底层的函数、实现更高层次的功能(菜单、工具条),甚至可以把相关菜单和工具条集成到原有CAD系统中,使得二次开发应用与原系统风格完全一致,用户体验很好。 CATIA基于开放式可扩展的V5架构使得用户可以方便地通过二次开发扩展应用功能。 CATIA提供了两种编程API,一种是Automation API,采用组件对象模型(Component ObjectModel,)技术把相关模块接口封装在独立的组件内。 另一种是C+/Java API,在C+的快速集成开发环境(RADE)2CATIA VBA二次开发入门与提高中进行程序设计。 在VBA和CAA的选择问题上,历来存在争论,读者应根据自己的理解进行对比和选择。 下面就作者自己的理解,给出VBA和CAA各自的优缺点,供大家参考。 优点缺点VBA (1)支持多种开发语言,开发方式灵活。 (2)API相对简单,入门快 (3)支持进程内和进程外程序 (4)一套源码支持多个CATIA V5版本(极少部分API会有出入) (1)部分CATIA底层功能不具备VBA API接口 (2)程序效率不如CAA CAA (1)有比较底层的程序接口,可以实现高级开发功能 (2)能够开发具有CATIA系统风格的界面,相关菜单和工具命令按钮嵌入在CATIA原生系统中使用方便 (1)采用C+语言在RADE环境中开发,门槛高1.2本书讨论的内容本书把所有基于AutomationAPI的CATIA二次开发统称为CATIA VBA二次开发,这是本书讨论的核心内容。 这种叫法可能和部分人的理解不一致,请注意区别。 由于技术支持几乎所有程序语言,所以CATIA VBA二次开发也可以采用各种编程语言来实现。 按照使用语言的不同,CATIA VBA二次开发的开发模式大体有如下几种 (1)VBA Project采用CATIA提供的VBA集成开发环境(IDE)进行程序设计,项目是进程内应用程序,能够设计窗体界面,可以方便地把生成的程序添加到CATIA工具条中。 (2)CATIA宏脚本采用VBScript语言编写代码,也可以把程序集成到CATIA工具条中,但脚本程序的输入输出功能较弱,无法实现复杂的交互界面。 (3)其他脚本语言采用VBScript,JavaScript,Python等语言编写代码,在CATIA以外执行,特点是可以写成比较短小灵活的代码集成到其他应用中。 (4)高级语言编写的程序,如VB.,C#。 可以制作比较复杂的交互界面,可以利用.优势简化复杂业务流程设计任务。 本书假设读者是具有一定Visual Basic语言基础的工程人员、学生等。 Visual Basic的基本语法不作为本书重点讨论的内容,用户可以阅读相关参考书或帮助文档。 本书主要内容包含如下几各部分3CATIA VBA二次开发入门与提高 (1)重点介绍Automation API主要对象的概念、用法以及它们之间的关系; (2)通过相关实例代码,介绍CATIA常用模块中若干重要对象和操作的开发方法和技巧; (3)使用不同开发工具进行CATIA VBA二次开发的基本方法介绍。 4CATIA VBA二次开发入门与提高2快速入门2.1CATIA宏脚本CATIA宏(Macro)是达索向用户提供的一种记录、重放用户操作的工具(CATIA VBAProject也属于宏,本书中把VBAProject放在CATIA VBA一节中讲,本节重点讲宏脚本)。 当用户激活“录制宏”操作时,系统把用户操作历史录制成脚本代码。 CATIA宏脚本有两种语法,分别是CATScript和CATVbs。 在CATIA V5R7之后的UNIX系统下已经不再使用CATScript语法,取代它的是CATVbs。 CATVbs语法中取消了原有的类型声明代码,使得宏代码更加精简。 在Windows系统中仍保留CATScript,是为了向下兼容早期版本宏代码。 在CATIA中录制宏时,如果用户没有指明宏目录,则宏被保存在系统临时目录或CATIA文档中,当文档被移除后,已经录制或的宏可能会丢失。 因此建议读者在CATIA中设置默认宏目录并指向本地硬盘路径,保证录制的宏不会因为文档删除而丢失。 设置默认目录的方法如下点击“工具-选项”,弹出CATIA选项卡,选择常规-宏,在“默认宏库”下拉框中选择“目录”,点击浏览文件夹,添加默认目录。 2.1.1录制第一个宏文件在CATIA窗口中点击“工具-宏-启动录制”,如下图5CATIA VBA二次开发入门与提高弹出用户界面如下可以选择默认宏目录,以方便宏文件的管理和维护。 读者也可以新建宏目录,方法是点击右上角“宏库”按钮,在“库类型”中选择“目录”,然后点击右侧“创建新库”按钮,在弹出的窗口中设置宏文件存放目录。 “使用语言”推荐选择MS VBScript(即CATVbs),用户可以自定义宏名称,设置完成后点击“开始”,CATIA开始记录用户操作。 此时用户界面出现停止录制按钮。 然后请执行以下操作创建一个新零件,并进入“创成式曲面设计”(GSD)模块。 在零件中插入几何图形集,创建任意3个点作为控制点创建样条曲线。 操作结果如下图所示6CATIA VBA二次开发入门与提高点击停止录制按钮,录制完成。 然后点击“工具-宏-宏”(或使用快捷键Alt+F8)可以查看用户录制的宏。 2.1.2宏代码解释 (1)宏文件结构用文本器或CATIA宏器打开刚才录制的宏文件,可以发现操作历史被记录在CATMain()函数体中,以End Sub结束。 其结构如下Language=VBSCRIPTSub CATMain()End Sub说明CATIA宏脚本需要有一个入口函数,即CATMain()。 宏代码总是从入口函数的第一行开始解释执行。 在入口函数之外,用户也可以添加自定义子函数,子函数可以被其他函数调用。 (2)新建Part文档,并添加几何图形集CATIA宏是进程内程序,可以直接引用“CATIA”对象(CATIA二次开发根对象)。 几何图形集(Geometrical Set)对应的对象为HybridBody,从HybridBodies(Collection类型)中创建。 我们录制的宏代码的前几行是这样的(英文字符单引号后面为注释内容)Set documents1=CATIA.Documents获取CATIA中文档集合Set partDocument1=documents1.Add(Part)添加一个新的零件文档Set part1=partDocument1.Part获取part对象。 Part对象是零件操作根对象Set hybridBodies1=part1.HybridBodies获取Part中的几何图形集集合对象Set hybridBody1=hybridBodies1.Add()添加一个几何图形集part1.Update更新零件显示 (3)创建3个坐标点如果用户要在零件中创建线框和曲面几何元素,首先要获得HybridShapeFactory(“混合形状工7CATIA VBA二次开发入门与提高厂”)对象。 然后可以使用HybridShapeFactory创建坐标点的方法AddNewPointCoord(x,y,z)创建几何点,最后用hybridBody1.AppendHybridShape方法用来把坐标点添加到几何图形集中。 Set hybridShapeFactory1=part1.HybridShapeFactory获得HybridShapeFactory对象Set hybridShapePointCoord1=hybridShapeFactory1.AddNewPointCoord(0.000000,0.000000,0.000000)hybridBody1.AppendHybridShape hybridShapePointCoord1part1.InWorkObject=hybridShapePointCoord定义当前工作对象,执行时此行代码可以不要part1.Update创建第二个几何点Set hybridShapePointCoord2=hybridShapeFactory1.AddNewPointCoord(0.000000,100.000000,0.000000)hybridBody1.AppendHybridShape hybridShapePointCoord2part1.InWorkObject=hybridShapePointCoord2part1.Update创建第三个几何点Set hybridShapePointCoord3=hybridShapeFactory1.AddNewPointCoord(0.000000,100.000000,100.000000)hybridBody1.AppendHybridShape hybridShapePointCoord3part1.InWorkObject=hybridShapePointCoord3part1.Update (4)创建样条线宏文件中使用AddNewSpline方法创建样条线,并定义了样条线格式第一个参数SetSplineType选择样条线类型,0表示选择三次样条曲线;SetClosing方法用来设置样条曲线是否首尾相接,0表示首尾端点不相接。 然后代码分别为样条曲线指定控制点,即上一步中创建的三个几何点。 Set hybridShapeSpline1=hybridShapeFactory1.AddNewSpline()hybridShapeSpline1.SetSplineType0hybridShapeSpline1.SetClosing0指定样条曲线的型值点Set reference1=part1.CreateReferenceFromObject(hybridShapePointCoord1)hybridShapeSpline1.AddPointWithConstraintExplicit reference1,Nothing,-1.000000,1,Nothing,0.000000Set reference2=part1.CreateReferenceFromObject(hybridShapePointCoord2)hybridShapeSpline1.AddPointWithConstraintExplicit reference2,Nothing,-1.000000,1,Nothing,0.000000Set reference3=part1.CreateReferenceFromObject(hybridShapePointCoord3)hybridShapeSpline1.AddPointWithConstraintExplicit reference3,Nothing,-1.000000,1,Nothing,0.000000hybridBody1.AppendHybridShape hybridShapeSpline1添加样条曲线到几何图形集中part1.InWorkObject=hybridShapeSpline1part1.Update经过上面的介绍,可以看出CATIA宏按照操作顺序忠实记录了用户的操作命令和数据。 如果不熟悉某个操作对应的命令,通过录制宏的方式可以快速获得相关信息。 2.1.3宏上一节中介绍了系统录制的宏脚本的结构。 现在我们要做的是,参考VBScript语法对录制出的宏文件进行,扩展或增强宏文件功能。 对于上节中的宏文件,我们简单一下,可以在CATIA中用样条曲线拟合一条正弦曲线。 为了用样条曲线拟合正弦曲线,我们首先创建多个正弦曲线离散点作为样条曲线控制点。 控制点越密,生成的样条曲线越接近于正弦曲线。 本例中假设我们选择用100个控制点模拟正弦曲线。 8CATIA VBA二次开发入门与提高我们已知控制点的坐标规律按照正弦函数变化,所以创建点的过程可以在循环中实现。 这里提到的循环是指某个变量在一个范围内变化时,多次自动执行循环体内的代码,直到满足循环结束条件。 VBScript中常用的循环语法是Do循环和For循环。 例如计算0+2+4+6+100的算法可以写成如下代码Dim sumsum=0For i=0to100step2step2表示循环时i每次自加2。 当省略step关键字时默认step=1sum=sum+i Next创建单个几何点和样条曲线的方法已经在上一小节介绍过,可拿来用在本例中的循环中。 为了节省代码,我们每创建一个点,直接指定它为样条曲线控制点,这样就可以把在一个循环中完成两件事情。 假设正弦曲线所在的平面为XZ平面,之后代码如下(参见本书示例代码Chapter2sincurve1.catvbs)Sub CATMain()Pi=3.1415926定义圆周率常量T=2.5T是正弦曲线周期A=100A是放大量,适当增大纵坐标比例,使得曲线看起来协调N=100N是控制点数量Set documents1=CATIA.Documents Set partDocument1=documents1.Add(Part)Set part1=partDocument1.Part SethybridBodies1=part1.HybridBodies SethybridBody1=hybridBodies1.Add()part1.Update SetoHSF=part1.HybridShapeFactory SethybridShapeSpline1=oHSF.AddNewSpline()hybridShapeSpline1.SetSplineType0hybridShapeSpline1.SetClosing0通过循环完成多个点的创建for i=0to N-1假设用N个点模拟样条曲线在ZX平面创建曲线,Y坐标为0Set CtrPt=oHSF.AddNewPointCoord(A*Pi*i/N,0.0,A*Sin(T*(2*Pi)*i/N)hybridBody1.AppendHybridShape CtrPtSet reference1=part1.CreateReferenceFromObject(CtrPt)hybridShapeSpline1.AddPointWithConstraintExplicit reference1,Nothing,-1.000000,1,Nothing,0.000000Next hybridBody1.AppendHybridShape hybridShapeSpline1part1.Update EndSub运行结果如下图9CATIA VBA二次开发入门与提高在上例中如果希望周期T是可变的,我们可以用简单的输入框实现数据输入。 在VBscript语法中,交互输入数据可以用InputBox实现。 例如上述宏程序中给T赋值的语句可以改成下面的代码T=InputBox(请输入正弦曲线周期,实数类型,正弦曲线程序)改变之后,执行宏脚本时弹出对话框如下图所示。 输入周期数并点击确定后,程序按照用户输入的周期绘制曲线。 (对应的代码见Chapter2sincurve2.catvbs)2.1.4创建宏当用户熟悉CATIA V5Automation的语法之后,也可以在宏目录中新建宏,并手动调试。 用户可以点击“宏”对话框右侧的“创建”按钮,弹出“创建新宏”对话框。 在窗体中可以输入新建宏的文件名。 10CATIA VBA二次开发入门与提高点击确定,在宏列表中出现并默认选中了刚才创建的宏文件,此时点击右侧的“”按钮,在弹出的“宏器”窗口中可以看到自动生成CATMain()函数结构,其内容为空,用户可以在其中自己的代码。 2.1.5添加宏到CATIA工具条CATIA工具条是具有一定功能的图标按钮组合,一般停靠在用户窗口周围或浮动在图形区前面。 用户可以通过工具条调用各种操作命令,使用起来比较方便。 下图是曲面和线框操作的工具条CATIA提供了自定义工具条机制,用户可以把CATIA宏或VBA项目添加到指定模块的工具条中,供随时调用。 假设我们需要在创成式曲面设计(GSD)模块下添加工具条,把前面讲到的创建正弦曲线的宏文件作为工具条的一个操作命令,其操作步骤如下 (1)打开“定制”菜单先切换到创成式曲面设计模块,点击“工具-定制”(或“工具-自定义”,不同版本汉化时有差异),弹出对话框如下图11CATIA VBA二次开发入门与提高选择“命令”选项卡,在左侧列表“类别”中选择“宏”,此时右侧可见当前宏库中的宏文件。 我们选择sincurve2.catvbs,在“显示属性”中为此命令选择图标并设定快捷键。 选择“工具栏”选项卡,单击右侧“新建”按钮,在弹出的对话框中输入工具栏名称,如“正弦曲线”,则左侧列表中出现对应命令的名称。 点击“添加命令”按钮,在命令列表中选择sincurve2.catvbs,操作完成。 此时在CATIA窗口中出现新工具条。 点击此工具条,则系统开始执行sinecurve2.vbs,完成正弦曲线的创建。 12CATIA VBA二次开发入门与提高2.2VBA项目本小节介绍如何在CATIA IDE中创建VBA项目,仍然以创建正弦曲线为例。 点击“工具-宏-宏”(或者按下ALT+F8),弹出“宏”窗口。 在窗口右上角点击“宏库”弹出新的窗口。 在“宏库”窗口中的“库类型”下拉列表中选择“VBA项目”,然后点击“创建新库”,输入新建宏的名称(如果有必要请路径),然后点击确定,退出创建宏窗口。 操作过程如下图所示再次点击“工具-宏-Visual Basic器”(或按下ALT+F11),弹出CATIA VBA IDE(IDE意思是集成开发环境)。 在项目列表中能看到刚才创建的宏库。 右键单击项目列表中的宏库,选择“Insert-UserForm”,可以在IDE中看到新建的窗体,如下图所示13CATIA VBA二次开发入门与提高在弹出的UserForm1中选择添加三个Label,三个Textbox,两个CommandButton控件,调整控件位置,修改控件名称(其中三个Textbox的名称分别为周期tb_T,振幅tb_A,控制点个数tb_N)和默认值,绘制如下图所示的窗体窗体绘制完成之后,双击确定按钮,进入代码页面。 把sincurve2.catvbs中主函数体内的代码复制到“确定”按钮的单击事件响应函数中,如下图所示14CATIA VBA二次开发入门与提高然后代码,删除第一行Option Explicit语句(删除后,不必强制在使用之前定义变量)。 在菜单中选择“Tools-Options-Editor”,取消勾选“Require VariableDeclairation”。 赋值语句T=Me.tb_T A=Me.tb_AA是放大量,适当增大纵坐标比例,使得曲线看起来协调N=Me.tb_NN是控制点数量返回用户窗体,双击“取消”按钮,在单击事件函数中输入Me.Hide,程序完成。 UserForm1中的代码如下Private SubcmbKO_Click()Me.Hide EndSub PrivateSub cmbOK_Click()Pi=3.1415926定义圆周率常量T=Me.tb_T A=Me.tb_AA是放大量,适当增大纵坐标比例,使得曲线看起来协调N=Me.tb_NN是控制点数量Set documents1=CATIA.Documents SetpartDocument1=documents1.Add(Part)Setpart1=partDocument1.Part SethybridBodies1=part1.HybridBodies SethybridBody1=hybridBodies1.Add()part1.Update SetoHSF=part1.HybridShapeFactory SethybridShapeSpline1=oHSF.AddNewSpline()hybridShapeSpline1.SetSplineType0hybridShapeSpline1.SetClosing0通过循环完成多个点的创建For i=0To N-1假设用N个点模拟样条曲线在ZX平面创建曲线,Y坐标为0Set CtrPt=oHSF.AddNewPointCoord(A*Pi*i/N,0#,A*Sin(T*(2*Pi)*i/N)15CATIA VBA二次开发入门与提高hybridBody1.AppendHybridShape CtrPtSet reference1=part1.CreateReferenceFromObject(CtrPt)hybridShapeSpline1.AddPointWithConstraintExplicit reference1,Nothing,-1#,1,Nothing,0#Next hybridBody1.AppendHybridShape hybridShapeSpline1part1.Update EndSub运行程序,可以看到执行效果和sincurve.catvbs一致,但在界面中可以输入三个变量,变量的含义有对应的Label控件说明。 相关程序参见本书示例代码Chapter2VBASinCurve.catvba。 16CATIA VBA二次开发入门与提高3使用Automation帮助CATIA Automation帮助中包含CATIA VBA二次开发的接口架构说明和每个对象的详细解释以及丰富的例子。 Automation API中的对象和方法非常多,用户不

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论