关于SolidWorks宏的使用说明(引用丢失)

您所在的位置:网站首页 swp什么软件能打开 关于SolidWorks宏的使用说明(引用丢失)

关于SolidWorks宏的使用说明(引用丢失)

2024-06-20 06:42| 来源: 网络整理| 查看: 265

一、SolidWorks宏的使用说明

 SolidWorks常用的宏,一般都是使用VBA来编写,以.swp为后缀的文件。

1. 首先,是怎么使用宏文件,有两种方法。

1.1 自定义宏按钮,然后要使用的时候点击按钮即可。                                              

1.2 设置快捷键。方法:自定义>键盘>宏>新建宏按钮,见下图——

2. 怎么编辑宏。 2.1 调出宏工具。

 

2.2使用VBA编辑器。

3. 使用宏时发生的错误。 3.1 提示找不到工程或库,可通过以下的设置修复(不同版本的SW对应不同版本的库,显示缺失的时候,可以从下方找到对应版本的库,打上勾确定即可)。

3.2 别人正常运行的宏,如果你运行不了或者没出效果,有几个可能: ①是否没打开引用(见3.1); ②可能是因为SW版本过低,宏里使用了旧版本没有的API; ③是否系统里面安装有多个版本的SW; ④电脑的【文件夹选项】中,是否选择了隐藏扩展名; ⑤SW语言的问题,使用中文和英文会有区别; ⑥可能该宏考虑不够全面,只适用于一般情况,没考虑到你的特殊情况。

二、关于VBA宏引用(宏适用的SW版本)的讲解

相信很多人在编写、调试、及使用宏的时候,都遇到过这样的报错: 找不到工程或引用,用户类型未定义, 不支持该属性或方法。。。 具体情况有如下几种可能: 1.宏在高版本的应用中编写并引用了高版本的库,拿到低版本应用中运行,就会出现引用缺失。   例如,宏在SW2018版里编写,引用了SW2018的库,用户使用的却是SW2016。 2.引用的控件缺失。     例如,为了实现某个动画效果,引用了flash的控件,但是用户电脑上并没有这个控件,就会报错。 3.引用正常,但是使用的属性或方法只有高版本中才出现。     例如,RenameDocument这个方法在SW2016版本才出现,在SW2015及以下版本中是不支持的。

本版版主Allate有个扫盲帖,里面也说到这些内容了,解决办法就是打开VBA的IDE编辑器,然后在工程引用里面更正引用。 更正引用对写代码的人可能不算个问题,但是对不懂代码的小白或者宏被加了密码的情况,就有些强人所难了。 在此,我算是做个补充吧,希望可以减少写宏代码的各位以及宏用户的困扰。 以下内容,主要供写VB(A)代码的各位参考,新手小白可能一时半会不明所以,请略过就好。以下内容是VB(A)甚至其他编程语言的共性知识,不仅仅是在Solidworks里, 在AutoCAD,Office,WPS等支持VBA应用中都是一样的。 '======================================================= 对象变量的申明可以是显式的或隐式的,或者称为 前期绑定和后期绑定。 举例: '以下两行是显式申明,需要引用 Sldworks xxxx Type Library Dim swApp As SldWorks.SldWorks Dim swModel As SldWorks.ModelDoc2

'以下两行是隐式申明,不需要引用  Sldworks xxxx Type Library Dim swApp As Object               'as SldWorks.SldWorks Dim swModel As Object            'as SldWorks.ModelDoc2

1.显式申明(前期绑定) 好处:是显式声明的对象变量会自动列出相关的属性和方法,这对写代码的人是很友好的。 缺点:需要添加引用,引用了低版本的库,拿到高版本应用中可以正常使用,反过来,引用了高版本的库,在低版本应用下就无法使用了。

2.隐式申明(后期绑定) 好处:是不用担心引用问题,因为没有引用。只要宏里面使用的属性和方法在当前版本应用中支持,这个宏就能正常运行。 缺点:申明的对象变量不会自动列出其支持的属性和方法,这对写代码的人是个考验。

那么,如果既希望写代码方便,又不想担心各版本引用问题,可以有以下两全其美的解决办法: (1)在写代码调试时,将需要的引用正常添加(勾选),相关的对象变量也都显式申明。    注:Solidworks及其他常见的软件一直在更新迭代,相应的API接口也一样在更新迭代,但都是逐步增加接口的,    很多API接口在旧版中老早就存在了。并且为了兼容性,新版会保留支持大部分旧版的接口,     所以如果可实现功能,请尽量使用较低版的属性和方法,这样你写的宏可以适用更多的版本。 (2)在代码调试完成后,将不必要的引用去掉,将里面显式申明的对象变量改成隐式申明。

说明:将显式申明改为隐式申明后,会存在报错或不报错但达不到预期的情况, 如果你遇到这样的情况,不要过来骂我说我骗人,你就继续显式申明就是了。。。

相关的,这里也说一下关于一些常量的定义,例如 ModelDoc的类型(一般通过GetType得到),会涉及到如下几个常量: 如果引用了SolidWorks XXXX Constant Type Library,这几个常量就可以直接用。 常量名                 常量值 swDocASSEMBLY     2 swDocDRAWING      3 swDocLAYOUT        5 swDocNONE            0 swDocPART            1 swDocSDM              4

样例代码: if swModel.GetType= swDocPART  then ...  如果swModel的类型是swDocPART(零件),则.....

如果不想引用相关的常量库,可以有以下两种做法: (1). 用对应的常量数值代替(会降低代码的可读性,如果对应的数值太多,一般很难记住其含义)   以上样例代码可以写成   If swModel.GetType= 1 then ...                     如果查询到swModel的类型是1,则...     这样写功能与上面的写法是等效的,但是可读性就差了,你得记住这里1的含义是零件模型才能理解这一句的意思。

(2).在代码中自己加入以下常量定义,即可达到和引用常量库后相同的效果了。 Const swDocASSEMBLY = 2 Const swDocDRAWING  = 3 Const swDocLAYOUT   = 5 Const swDocNONE     = 0 Const swDocPART     = 1 Const swDocSDM      = 4

VBA宏引用总结

低版本做的宏,高版本可以使用,并且会自动更换新版本的引用

高版本做的宏,低版本不一定能用,而且引用会丢失

所以若考虑通用性的话,做的宏尽量使用低版本的SolidWorks



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3