iCAx开思网

标题: 【原创】SW二次开发 [打印本页]

作者: 风缘    时间: 2002-6-8 02:52
标题: 【原创】SW二次开发
    小弟我身无分文。为了讨一口饭吃,就灌点水啦。 有所不对的地方请指教!
    好像目前讨论SW二次开发的比较少,而在所有的三维CAD软件中,其二次开发接口比较友好(我把AutoCAD归为二维的,其三维的MDT我实在是不想用,但是我老板下一阶段似乎要我做MDT的二次开发,苦呐),由于其本身就是在windows下开发的(不像其他大型的CAD系统都是从UNIX移植过来的),提供了VB和VC的接口(曾看到过一篇文章说delphi也可以),它们都是采用COM组件技术(这应该算是软件开发的一种趋向吧),使用VC编译出来的DLL可以作为SW的插件将你的程序集成到SW中。
    由于本人充其量就是个新手,因此只能以自己经验再凑上api帮助的翻译。错误在所难免,希望各位高手多多指导。
作者: 风缘    时间: 2002-6-8 03:06
    我的使用环境:win2000+SW2001+VC6.0。
准备工作:
    1. 获取API帮助文件(sw安装目录\lang\apihelp.chm),虽说是英文,但目前也只有这个最全的资料了。慢慢啃吧。
    2. 获取VC的SW工程向导文件(这要到sw的老家下载,如果需要我可以发到邮件),这个文件可很重要,它给出了基本的模板(就像ARX一样),由这个向导生成的dll文件马上就可以在sw下运行。得到这个文件后,拷贝到VC安装目录\Common\MSDev98\Template文件夹下,如:D:\Program Files\Microsoft Visual Studio\Common\MSDev98\Template。
    有了这两个文件,基本上就可以干活了,
作者: 风缘    时间: 2002-6-8 03:27
制作第一个应用程序:
     这样当启动VC后,新建工程,选择工程选项卡,就会出现solidworks Add_In AppWizard,给定工程名,选择Next,将有一系列的选项,如果要使你的程序做出属性管理页(PropertyManagePage)的风格,请选中第一个复选框。其他的就根据需要来选择了。点击Next,出现插件属性页,这将提供选项来描述你的插件的功能(这很重要的,取个好名称有助于用户顾名思义),设置好后,点击finish。这时会提示是否添加注册表信息,选择添加。这样一个插件的模板就做好了。
     编译(注意:不要改动任何选项),一般会出项编译成功,如果编译不成功,那就是你的系统的问题了,这个模板可是千锤百炼的了。
     启动sw,新建一个文件(可以是零件、支配、工程图文档),选择工具\插件,这时候会显示出所有在注册表中注册过的插件(如果在生成工程是选用了不添加注册表,你的插件就不会出现),找到你的插件的名称(这可是你自己命名的哟,还记得是在哪里命名的吗?),打上勾。ok
    这时sw的菜单中就会出现新的菜单项Example App/Example Menu Item。这就是你的第一个sw插件,不过点击它什么也不做!
作者: 风缘    时间: 2002-6-8 03:44
   好了,卸载这个插件(还是选择工具/插件, 将你的插件前面的勾取消)。
   回到VC,找到文件(你的工程名.app),里面有个函数
       void MenuItemCB(void)
      {
          AfxMessageBox(_T("这就是我的第一个插件?不会吧,这么容易?!"));      //添加的内容
           return;
       }
   编译,在sw中重新加载这个插件(不需要再啰嗦了吧),点击Example App/Example Menu Item菜单,哈哈,弹出个消息框,就这么简单。
   以及三点了,肚子好饿,明天还要早起去买空调,长沙的天气太热了!
   今天就写到这,算是开个头吧。
  
            --未完待续
作者: antslg    时间: 2002-6-8 16:32
这方面确是很少有人谈及
许多地方
我意识到只有这途径是最好的方式
可惜没有实用的压力
也就少了学习的动力
风缘兄贴的内容省人不少摸索的力气
大力欢迎!!
作者: yu_kenneth    时间: 2002-6-8 17:23
提示: 作者被禁止或删除 内容自动屏蔽
作者: Shadow    时间: 2002-6-8 18:59
同意楼上的看法。还有,SW自身的曲线功能还不是很好,如一些公式曲线,都可以用自编程的方式。可惜我对编程也一无所知了。学校里学的是该死的Fortran
作者: 风缘    时间: 2002-6-9 02:23
    我本人觉得VB6学起来确实是容易上手,但是它使用的是OLE技术,也就是说用VB只能生成exe文件,它与SW的通信是两个应用程序之间的通信,这在执行效率上有所影响,这是其一;其二:如果当用户使用你的应用程序时,它要在你的应用程序中进行交互,而要看结果的话要切换到sw中,如果你的对话框比较多的话,这将使得你的程序交互性差。
    而用VC做的话,它作为一个插件,可以直接在sw中定制自己的菜单,就像ARX一样,而且作为动态连接库,它的执行效率也是很高的。
作者: hlp    时间: 2002-6-10 21:30
我在之前曾经发过关于BOM的帖子,现在正在着手解决这方面的问题。我是从ActiveX Automation的思路着手,根据Microsoft对于COM的定义,应该可以利用Macro中内嵌VB/VC代码的方法来开展SW的二次开发。而且这要比使用Visual Studio/VS.Net要求低,只要会MS Office VBA, 大多就可以开展开发工作。确实,国内作SW二次开发的人很少,远不如ACAD那边热闹;我只是在比较了Autodesk和Solidworks两家的产品之后,觉得SW更能满足我的需要,或许OneSpace Designer更好,可是我不得不急功近利,毕竟我对SW更熟悉。
  
风缘兄提到VC的SW工程向导文件,如能寄给我一份,当不胜感激。我的email address: ncccteda@teda.tj.cn
作者: nuassembly    时间: 2002-6-13 16:08
VB就是好,但你必须是高手.
听说WINDOWS XP就是用3亿条VB写的,美国法院的
传票要了原程序,发现了这个惊人秘密.
BILL GATES是VB高手,因为他为第一代PC写过VB的编译程序.
传说是这样的,BILL GATES去IBM的PC事业部演示他的
BASIC编译程序.那时候还没有软盘,BILL GATES忘带了
存在磁带上的程序(要不就是磁带被弄坏了),BILL GATES
下了飞机,在计算机前几个小时凭着记忆,活生生地把20K的编译
程序用机器码给敲了进去.!!!!!!!还工作了 --- 还好那时的
机器的操作系统是CPM,不象现在的WINDOWS,动不动就
CRASH. BILL GATES 就靠BASIC 程序开始了他的梦想.
作者: EMeiMonkey    时间: 2002-6-14 16:10
我也要做SOLIDWORKS的二次开发,报个到,哈哈!
向风缘兄学习!
作者: cadtools    时间: 2002-6-19 20:12
不知大家有没有用SW2001 PLUS,据说这个版本已经可以直接打开VB6编译的DLL文件,大家可以参考一下SW API帮助。
作者: EMeiMonkey    时间: 2002-7-16 11:00
怎么不见 风缘 老兄的下文了,回家避暑去了吧?
作者: EMeiMonkey    时间: 2002-7-24 17:53
cadtools wrote:
不知大家有没有用SW2001 PLUS,据说这个版本已经可以直接打开VB6编译的DLL文件,大家可以参考一下SW API帮助。

  
好像不行吧,不过国外好像有个网站专门提供了在VB中开发DLL形式的插件模板。大家可以上这儿看看:www. bitwright.com
作者: shufuwu    时间: 2007-8-17 10:51
请教一下如何用vb来编写程序实现在solidworks中添加菜单?




欢迎光临 iCAx开思网 (https://www.icax.org/) Powered by Discuz! X3.3