《solidworks二次开发.doc》由会员分享,可在线阅读,更多相关《solidworks二次开发.doc(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2.3 Solidworks 二次开发Solidworks是在windows环境下实现的三维机械CAD软件。它采用了windows用户界面 ,拥有强大、动态激活的属性管理器 ,以灵活的草图绘制为基础 ,辅助以特征建立能力以及装配控制功能 ,并提供了自由、开放、功能完整的API开发工具接口 。这些功能使solidworks实现了三维CAD软件所提倡的易操作性、高效性以及功能完全性。Solidworks软件进行参数化建模的主要技术特点是:(1) 基于特征。将某些具有代表性的平面几何形状定义为特征 ,并将其所有尺寸存为可调参数 ,进而形成实体,以此为基础来进行更为复杂的几何形体的构造。(2) 全尺寸
2、约束。将形状和尺寸联系起来考虑,通过尺寸约束来实现对几何形状的控制。(3) 尺寸驱动设计 通过编辑尺寸数值来驱动几何形状的改变,尺寸参数的修改将导致其他相关模块中的相关尺寸的全盘更新。采用这种技术的理由在于它能够彻底地克服了自由建模的无约束状态,几何形状均以尺寸的形式而被牢牢地控制住。Solidworks通过OLE(对象的嵌入与链接)或者COM为用户提供了自由开放、功能完整的二次开发接口(API)。因此,凡支持OLE和COM编程的开发工具,诸如Visual Basic、Visual C+等均可用于Solidworks的二次开发,以创建出使用人员所需的、专门化的Solidworks应用模块。So
3、lidworks支撑Activex Automation技术,在VB环境下建立客户程序可以直接访问Solidworks中的对象,在这里,为求方便,我们可将solidworks理解为一个服务程序,把二次开发工具的VB程序作为客户程序,它们之间只是服务器与客户的关系。用户主要在VB上进行操作,VB就可以驱动Solidworks完成相应的工作。通过调用API对象属性的设置和方法,就可以在开发的程序中实现与solidworks相同的功能。对于一般零件我们可采用人机交互的形式建立模型,设定合理的设计变量,再通过VB程序驱动设计变量实现模型的更新方法,系统开发流程如图2-5示:开始建立零件三维模型设定尺寸
4、变量引用solidworks对象库编写VB应用程序图2-5二次开发几乎是所有应用CAD 软件企业的共同需求,商品化软件开发机构为了开拓市场、扩大市场份额、保持产品的市场地位,也非常重视企业在应用 CAD 软件时的这个共性需求。本设计阐述了利用SolidWorks API接口开发嵌入式功能模块以扩充原SolidWorks 功能的关键技术,已在企业SolidWorks 二次开发中得以广泛运用,并且形成了客户化定制的SolidWorks软件系统,具有明显的实用价值。其中SolidWorks API(SolidWorks Application Programming Interface)提供了支持二
5、次开发的应用编程接口,通过该接口可以开发嵌入式功能模块以扩充原SolidWorks 的功能,形成客户化定制的SolidWorks 软件系统。本节对SolidWorks二次开发接口API 对象、DLL 动态连接库三种SolidWorks二次开发关键技术分别进行分析和简要论述。2.3.1SolidWorks二次开发接口API对象SolidWorks API(ApplicationProgramming Interface)是SolidWorks基于ActiveX Automation的应用编程接口,利用SolidWorksAPI 可以方便高效地设计具有Windows 风格的、与SolidWorks
6、 无缝集成的应用程序。Solidworks API的调用是指调用Solidworks的事件、方法、属性及相关功能 ,Solidworks是一个自上而下的树形网络结构 ,调用下层对象时,一定要先调用上层对象。Solidworks应用程序对象是所有调用SolidworksAPI功能的最顶层 ,也是调用其他对象的入口 。在其之下是Solidworks活动文档对象 ,它 包括 “零件环境”、“装配环境 ”、“工程图环境”及 “非工作环境”四个状态。得到的Solidworks活动文档对象主要是当前活动的工作环境 ,一旦上述两个对象调用之后 ,就可以调用户提供的其他功能。在进行二次开发的过程中,只有调用正
7、确的对象,才可以调用对象相应的事件、属性、方法及相关函数。所以 ,API的层次调用对二次开发有着重要的意义。Solidworks 的OLE对象总共可以分为十个大类,数百个对象,涵盖从Solidworks基本操作 如打开 、保存等到建模、修改等各个功能。但是需要注意并不是所有的对象都可以被VB所调用。Solidworks对象 ,可以实现应用程序的最基本的操作.如创建、打开、关闭和退出Solidworks文档,设置当前的活动文档,并可以对Solidworks的系统环境进行设置。ModelDoc对象属于模型层,是sldworks的子对象。用ModelDoc对象可以 实现视图设置、轮廓线修改、参数控制
8、、对象选择打开和保存文档、创建编辑特征参量、创建框架等与实体模型相关的各类操作,ModelDoc对象包括PartDoc、AssemblyDoc和DrawingDoc等三个常用的对象。不管是用何种编程语言对Solidworks进行外部开发或在其内部进行开发,都是通过调用Solidworks的对象体系结构来进行的。Solidworks的API编程接口封装了所有的ActiveX对象供编程所用。Solidworks的对象层次结构可 以描述为自上而下的树型结构模型如图所示 。最低层的根对象是Sldworks对象,其他对象都是他的子对象。其中父对象与子对象之间的关系并不是继承关系,而是包含关系 。也就是说
9、如果VB要与Solidworks的一个特定对象通信,必须先从Sldworks对象对其子对象进行遍历 ,直到找到该特定的对象 。另外,本节所提供的Solidworks对象表是所有SolidworksActive对象的总括,其中的箭头符号表示该对象下面还包含子对象。 SolidWorks API 是一个自上而下的多层次的树形网络(层次结构见图)。SldWorks 是根目录对象类,位于应用程序的底层,是访问SolidWorks API 所有对象的入口程序。接口对SolidWorks API 的调用实行逐级寻访,即先调用能实现所需功能的对象的父对象,然后调用与父对象相关的子对象,如果子对象所封装的属性
10、和方法不能实现所需要的功能,则继续调用该子对象的下级子对象,如此逐级遍历,直到结束。对SolidWorks API 对象的调用不能跨级,因为父对象与子对象是包含关系,而不是继承关系,父对象包含子对象的属性和方法,子对象自身不带有该属性和方法,跨级调用程序将会出错。SolidWorks API的常量 SolidWorks 提供了一个BASIC 模块swconst.bas,该模块包含了预先定义的许多SolidWorks 常数值,swconst.bas在SolidWorks安装目录下的samplesappComm 文件夹内。编制应用程序时,添加 VB 模块,将swconst.bas包含在VB 工程中
11、,否则API 函数调用将会出错。Solidworks API中的各对象关系sldworksEnvironmentFrameAttributeDefSWpropertySheetModelDoc2SWAddimUserUnitCustomPropertyManagerMathpointMathtransformMathUtilityMathVectorPropertyManagerPage2PartDocAssemblyDocDrawingDocFeatureAnnotationFeatMgrViewModelViewDimentionDimentionSketchDesignTableAttr
12、ibuteSelectionMgrLayerMgrModelViewManagerConfigrationManagerModelDocExtentionConfiguration图2-6 对象模型Other Object:ParameterEntityEnumBodies2EnumCoEdgesEnumFaces2EnumEdgesEnumDocuments2EnumLpops2EnumComponentEnumDrSectionEnumSketchHatchesEnumSketchPointsEnumSketchSegmentEnumDisplaydimentionsEnumModelVi
13、ews图2-7 solidworks对象模型在调用solidworks的过程中,我们只有对各个函数之间的关系和层次分的明了清楚,才能保证正确调用。如上图表所示,在编程中可以用作对象参考。要调用solidworks的API其他功能,必须先调用接口对象。一般的在程序里写作: Dim swApp As Object Set swApp = CreateObject(SldWorks.Application)2.3.2 DLL 动态连接库Solidworks本身自带有程序编辑器 VBA,通过宏录制可以实现对SolidWorks 的驱动,应用程序在SolidWorks 环境下直接执行,编程时不需要考虑S
14、olidWorks的库文件,而直接调用SolidWorks API所有函数及对象,随时编辑应用程序,环境支持如单步调试、逐过程调试等多种调试手段,调试的同时可进行修改。但VBA的功能较弱,所提供的控件数目较少,对象的属性、事件以及方法等不完全,用VBA 二次开发SolidWorks 将颇费周折,选用DLL动态连接库技术从外部操作SolidWorks 非常方便。DLL 动态连接库(Dynamic LinkLibrabry)是运行时连接的可执行代码和数据模块,用它能节省内存、方便地进行应用程序中的参数传递和通信、实现代码共享、升级方便、且独立于编程语言。SolidWorks 允许用户建立独立的可执
15、行文件(Standalone EXE)、应用型动态链接库文件( UserDLL)及扩展型动态链接库文件( Extension DLL)DLL 是基于Windows 程序设计的一个非常重要的组成部分。在建立应用程序的可执行文件时,不必将DLL 链接到程序中,而是在运行时动态装载DLL,装载时DLL被映射到进程的地址空间中。在每次运行SolidWorks 时,DLL 文件自动装载,操作方便。Solidworks API的调用是指调用Solidworks的事件、方法、属性及相关功能,Solidworks是一个自上而下的树形网络结构,调用下层对象时,一定要先调用上层对象。Solidworks应用程序对
16、象是所有调用SolidworksAPI功能的最顶层,也是调用其他对象的入口 。在其之下是Solidworks活动文档对象,它 包括 “零件环境”、“装配环境 ”、“工程图环境”及 “非工作环境”四个状态。得到的Solidworks活动文档对象主要是当前活动的工作环境,一旦上述两个对象调用之后 ,就可以调用用户提供的其他功能。在进行二次开发的过程中,只有调用正确的对象,才可以调用对象相应的事件、属性、方法及相关函数。所以 ,API的层次调用对二次开发有着重要的意义。在接下来的几个章节中本设计将对轮腿机构的部分组成构件作参数化分析,并注相应程序代码。12 码 序相注化 参构二部机开腿设本几来义的着
17、开对用层,以数相法、件象调才,正调中的开二能功供户以就用象两旦环的前是对动 。个境工“境环工 环、境 ,文 下。入的用也顶能 用有象用 层用要时象用构网下上是 ,相属方、 用调用 便方,自 时 运每。空程射 态行而序接 ,文执序应在部要非的序程 基 ) 件文态展及 件文动应 (文立独用 。于且便级码代信和数序用进、节用块和码可连运) 接动 便方非 作从技连 ,费 开次 ,等及件属象少数供提较 但改可的调试调调逐试如支序程编随数有 直,的 考不时,直环 应动 对以宏, 辑程自身 接接 作作在一对口须能他 用。象作中编所图用确保楚清次系关函对只我的 模象 征是点要主数进软 。功性效作倡件 维实 能
18、这口工开的完放开供并能制及能特助础为草灵以管的态大有面界 用。软 机现环 在 动制制何现束尺,来系尺形约造的何杂更来础,成进数可寸有将,为形何的有具 开序用应写对 用量尺型三立示示 发系法更现变动序过再量理设模建形交用们般。的 实序开可就和设对 过作应成 驱以,行 要用。客务只间序客作 具次二程一为 将我方为这的中 访可客下 , 撑 块 的化的人用以,次 于等+ 如具工编 持,因 口开的功开由提为 )入象 过 住控牢式的尺状态束的自克底它在的技采盘寸相中关致将的尺变的何值尺编计 三 模 型象 寸 变 象 -程应 发 义的着发对次 ,以数关、事应调可对的调中的开进。其提用可后用象上旦境的活要对档
19、 的得个境工 ”程、境配”件零包,象活 下其口象他是也最功 用有象应 象上先定象层调结形下上一 ,功性法件事 指调 程应集 、格 具地便以 ,程的 ( 对 接次 述述析分分键开二 种三态 、 口开 本系 定成功 充块式发可该过程用的二供 其价用明统软 制化成且运广中开 已术键能 以模入口 了述。求个件软 在视非位市的、场扩市了构开品求共业 有是 何象对个等 括对 类关模与框创参特、存开选、制改修置视实可 象子 层属 。行统 可,文前置 出、建作本序程现,对 用调被都的所不注。个改模到、打作本 盖象个类十以总 程 进 关对中 错会用函 ,程 包 模 添时程编夹 目 在 数 多定了块该. 了 量 错出程调,方该身自法性属子对,承不关包子象为,能的对 结,级此,级对用续,的现实法的装子如子的对调,象象功所能即寻级用 对口程入所 访底序应类录根 )结(网树的上一 。对包下该号箭其总象 表 的所,。象特找,历象其对 先通对特 说也系含,关不系间对对父对子象对对 对低 所模型下而述可次象 。程象 了口程 进结象 过都开部内开外