三维机械设计软件SolidWorks是一套基于Windows的CAD/CAE/CAM/PDM桌面集成系统,是由美国SolidWorks公司在总结和继承大型机械CAD软件的基础上,在Windows环境下实现的第一个机械三维CAD软件。它为用户提供产品级的自动设计工具。SolidWorks的突出特点是:三维参数化特征造型,特征管理员功能,全相关的数据管理,它功能丰富、操作简单、维护方便、学习周期短、应用开发方便,与多家CAM、CAE软件有紧密接口。
    SolidWorks是基于特征的三维参数化造型软件,对其进行二次开发可以遵循参数化CAD的原则。与以往非参数化CAD系统相比,参数化技术很大程度上提高了二次开发的效率。SolidWorks提供了完整的免费的二次开发工具API(ApplicationProgramming Interface应用编程接口)。凡支持COM编程的开发工具,如Visual C++6.0(以下简称VC++)、Visual Basic、Delphi等均可直接调用这些API函数开发出用户自己的程序模块,提高设计的效率与正确率。
    为了方便用户进行二次开发,SolidWorks提供了几百个API接口。这些API接口分为两种,即OLE Automation的IDispatch和作为Windows基础的COM(Component Object Model组件对象模型)。作为系统开发,COM是更合适的选择。使用Visual Basic进行开发时,只能采取外挂的工作方式,即需要在用户的应用程序和SolidWorks之间进行前后台切换,所以降低了设计效率。而COM接口支持使用VC++编程工具开发DLL(Dynamic Link Library动态链接库)程序,使用VC++开发的DLL应用程序模块可以直接嵌入到SolidWorks内部。加载成功后用户程序菜单直接出现在SolidWorks主菜单上,如同SolidWorks自带功能一样进行操作,极大地提高了设计效率。因此,本文就基于VC++阐述SolidWorks的二次开发

1 基于VC++6.0的So I.dWorks二次开发途径
    1.1 使用工程向导Swizard.awx进行二次开发
    首先,从SolidWorks公司的网站下载编程向导文件Swizard.awx,将其拷贝至Microsoft Visual Studio\CommonhMSDev98\Template目录下,把\SolidWorks\samples\appcomm文件夹下所有文件拷贝至lJkMicrosoft Visual Studio\VC98klnclude文件夹内。然后,在VC++中应用向导创建动态链接库工程(以下简称DLL),加人相关代码,编译生成动态链接库(*.DLL)文件。用户二次开发的应用程序,可直接挂在SolidWorks的菜单下,形成统一的界面。一般而言,开发人员首先需要在SolidWorks的界面上添加自己的菜单项,以此作为激活用户程序的接口,完成与用户的数据交换。在上述过程中,用户程序必须响应SolidWorks的一些消息通知,以保证各个操作的合法性,即要检测文档类型等。最后,连接DLL,将必要的用户程序输出。
    使用这种方法进行二次开发简单易行,容易理解,避免了安装和使用中的困惑。
    1.2 使用ATL(c/c++)对象向导进行二次开发

首先从SolidWorks公司的网站下载SolidWorksAPI SDK,将其解压缩并根据向导安装SolidWorks API SDK,然后在Visual C++中选择ATL COM Wizard创建动态链接库,加人相关代码,编译生成动态链接库(*.DLL)文件。此方式可在SolidWorks插件管理器中生成插件,并以菜单形式自动添加在新建或打开的零件视图中,以完成特定功能。
    此方式适合于SolidWorks的中级使用者,可使用户方便地以插件的形式将菜单嵌人SolidWorks主菜单中,简捷易行,但有一点值得注意,该向导生成的*.dll,只能用于SolidWbrks 2003。
    1.3 自定义向导和用现有的实例进行二次开发
    首先启动VC++,选择Custom AppWizard寻找现成的文件以生成新的工程。如果不想用向导,直接修改现有的实例也是一种方法。使用此种方法可在SolidWorks的菜单栏中出现新下拉菜单用以完成用户新添加的功能。这种方法适合于对SolidWorksAPI熟悉的用户,可以通过找一些现成的文件,更加灵活地使用自定义的模板进行二次开发。

2 SolidWorks二次开发过程
    这里以挤压模垫套(如图l所示)的参数化建模的二次开发为例,详细介绍SolidWorks二次开发的过程,图2为开发程序的主控页面。具体步骤如下。


图l 垫套的剖视图及主要尺寸


图2 程序的主控页面

1)安装VC++并配置开发环境 利用SolidWorks提供的二次开发模板创建工程。为确保包含必要的头文件,完全按照第一种方法配置卡发环境。
    2)绘制零件模板 模板零件的创建方法与一般三维模型的建模方式相同,但注意以下几点:分页(1)在对模板进行特征造型时,对二维截面轮廓,利用尺寸标注和施加相切、共线等关系实现对几何图形的全约束;
(2)正确设置控制三维模型的设计参数。尺寸参数可分为两种:一是与其它参数无关的独立参数;另一种是与其它参数有关的非独立参数。前者主要用来控制三维模型的几何尺寸和拓扑关系,后者可以用独立参数为自变量的关系式表示;
(3) 正确建立设计参数与三维模型尺寸变量之间的关联。主要有两种方法:一是在创建模型模板需要输入数值时,直接输入参数名。二是利用SolidWorks的关系式功能创建新的关系式,使系统自动创建的约束参数名与设计参数关联。
    3)VC++编程步骤
(1)利用SolidWorks提供的开发模板创建工程SWSD为工程名称
(2) 在CLASSVIEW中分别为CSWSDAPP的成员函数docCreateMenu,docRemoveMenu添加代码实现为系统添加菜单:
    //自定义菜单的插入位置
    #define swMenuPosition 5
    //添加顶层弹出式菜单[SWSD]
    hres=pFrame->AddMenu(auT("SWSD(&G))"),
    swMenuPosition,&bres);
    //添加[SWSD]的下一级菜[垫套]
    hres=pFrame->AddMenultem(auT("SWSD(&G)"),
         auT("垫套($D)..."),swLastPosition,
         auT("SWSD@MyFunction"{),&bres);
(3)点击FILEVIEW在SWSD.def文件里声明导出函数。DLL中包含一个导出函数表,通过函数的符号化的名字或序号(可选)识别这些函数。函数表也包含了函数在DLL内的地址。当SolidWorks首先加载DLL时,它并不知道将要调用函数的地址,但知道符号名和序号。动态连接过程后,在DLL中建立一张客户调用与函数地址的表把SolidWorks的调用与DLL中函数的地址连接起来;
(4)在SWSD.h中对导出函数声明;
(5)在SWSD.cpp文件里添加导出函数的函数体,这个函数就是用户开发的菜单所调用的执行函数,在这个导出函数里添加具体的代码可以实现开发人员需要程序执行的功能。
    4)编译 由于SolidWorks不再支持加载调试软件版本,因此,用户不能用"Win32 Debug"或"Win32 MBCS Debug"调试模式。为了调试代码,用户必须使用"Pseudo Debug"调试模式。此模式需要链接适当的MFC Release库,否则SolidWorks运行时可能会和己加载的MFC库发生资源冲突。
    5)应用程序的运行 如果应用程序是以DLL方式建立,则运行步骤如下:运行SolidWorks程序,选择File.Open并且改变打开文件类型到ADD.Ins(.DLL)。选取预定的DLL并单击OK,则用户的应用程序加入到SolidWorks。
    在VC++调试模式下运行SolidWorks进行代码的调试:在用户的VC++开发环境中,选择GO编译。在弹出的对话框中键入SolidWorks.EXE及其路径名。一旦SolidWorks运行选择File.Open并且改变打开文件类型到ADD.Ins(.DLL),选择要调试的DLL文件并单击OK,则用户的应用程序加入到SolidWorks。
    6)注册 有两种方式可以把用户开发的模块添加到注册表里面,使SolidWbrks可以自动的找到二次开发的模块:
(1)在VC++开发环境中,使用利用SolidWorks提供的二次开发模板创建工程,VC++提示是不是把这个工程添加到注册表里的时候,选择"是"。
(2)当更换系统或者在其他计算机中安装开发的新模块时,可以在工程文件夹内找到*.reg的一个注册表文件,双击就可把这个模块信息写入注册表。

3 结语
    介绍了在Visual C++6.0的集成开发环境下,通过动态链接库DLL调用SolidWorks API函数进行二次开发,实现机械零件参数化设计的方法。可以参考该方法对SolidWorks进行其他较为复杂的二次开发工作,建立适合用户需要的、专用的SolidWbrks功能模块。通过实例表明,基于DLL的SolidWbrks二次开发可以很好地实现与Solidwbrks系统的无缝集成,能满足用户开发三维CAD系统的需要。

转载于:https://www.cnblogs.com/tdskee/p/3512767.html

SolidWorks二次开发的研究相关推荐

  1. sw二次开发 python_基于C#的SolidWorks二次开发.doc

    摘要: 气动电阻点焊钳已经被各大汽车制造厂商广泛运的用于汽车焊接工艺中.它以无污染.压力稳定.动作敏捷等优点逐步替代了国内常见的液压传动焊钳,改变了液压传动滞缓的现象,从而达到了焊接循环的要求.本次毕 ...

  2. Solidworks二次开发平台 --- RyS.SwWorks [2015-09-18更新]

    RyS.SwWorks 是一款基于.NET的Solidworks二次开发平台,该平台封装了插件注册.菜单.工具栏.侧边栏.Document接口,使得Solidworks开发和部署简单高效. 安装程序中 ...

  3. C# SolidWorks二次开发 干涉检查

    总体思路 基于.NET Framework控制台应用程序进行SolidWorks二次开发,选中输入零件,实现干涉检查功能. 使用SelectByID2方法,选中待检查零件,然后使用ToolsCheck ...

  4. C# Solidworks二次开发 输入零件名选中零件

    实现功能 基于.NET Framework控制台应用程序进行SolidWorks二次开发,实现输入零件名,在软件中选中零件. 注意:(1)进行SolidWorks控制台程序二次开发不能使用.NET C ...

  5. SolidWorks二次开发 API-获取当前语言与重命名文件

    新的一年了,开始新的分享. 做SolidWorks二次开发的时候,难免会遇到多语言的问题. 针对不同语言的客户生成不同语言的菜单,所以我们要知道Solidworks的当前界面语言是什么. 这个就简单的 ...

  6. Python SolidWorks 二次开发---SolidWorks另存文件为其他格式

    Python SolidWorks 二次开发-SolidWorks另存文件为其他格式 Python SolidWorks 二次开发-SolidWorks另存文件为其他格式 文章目录 Python So ...

  7. 基于SOLIDWORKS二次开发的3D产品研发增效和企业信息化工具集SolidKits

    基于SOLIDWORKS二次开发的SolidKits工具的含义是3D产品研发增效和企业信息化工具集,目前已经帮助高科技.机器人.航空航天.船舶.汽车.机械设备.电器.电子等行业的上百家制造业企业提供了 ...

  8. Python SolidWorks 二次开发—SolidWorks中的事件实现

    Python SolidWorks 二次开发-SolidWorks中的事件实现 文章目录 Python SolidWorks 二次开发---SolidWorks中的事件实现 前言 一.如何实现com事 ...

  9. Python SolidWorks 二次开发---SolidWorks保存文件

    Python SolidWorks 二次开发-SolidWorks保存文件 Python SolidWorks 二次开发-SolidWorks保存文件 文章目录 Python SolidWorks 二 ...

最新文章

  1. 喊了好久的AI落地究竟卡在哪里了?
  2. 快速定位代码位置的IDEA小插件
  3. IE9正式版已完成 截图曝光
  4. 提示MyEclipse Trial Expired,手动获取MyEclipse 注册码
  5. 【创业公司的机遇与挑战】如何在1年内从产品助理到产品高管?
  6. coursera无法观看视频解决方法
  7. 什么?原来C#还有这两个关键字
  8. Angular Material 阴影使用
  9. laravel windows 下queue能长时间执行吗_后台执行超长时间任务解决方案
  10. 修复Winsock(转)
  11. c语言用链表实现成绩管理系统,C语言写的学生成绩管理系统(链表)
  12. python怎么打出pi_随手写了段 Python,微信的地球居然转起来
  13. STM32F407——蓝牙模块CC2541
  14. 我java启蒙老师 郝斌老师
  15. 生活随记 - 感恩老同学
  16. 【12月英语博客】念念不忘,必有回响
  17. EXTRACT() 提取函数
  18. 数据库第四单元mooc题
  19. js 插件 drag.js拖动
  20. 爱奇艺2020春季校园招聘全面开启!

热门文章

  1. 计算语言学课程笔记(一)
  2. catia如何将曲面加厚变为实体_catia中如何将封闭曲面做成实体?
  3. NMT(神经机器翻译Neural Machine Translation)常用术语
  4. java毕业设计会议室预约管理系统(附源码、数据库)
  5. 【C#】数据类型(sbyte,byte,short,ushort,int,uint,long,ulong和char。、、、)
  6. mmap/munmap函数详解
  7. 工程效率如何为研发赋能
  8. 最新发布:IT行业近5年平均年薪出炉!你在哪个梯队?
  9. 【软件测试】接口测试工具Charles之map remote setting
  10. Primefaces UI应用FA字符