tft每日頭條

 > 生活

 > solidworks宏一般在哪裡

solidworks宏一般在哪裡

生活 更新时间:2024-11-22 20:33:25

一、SolidWorks宏的使用說明

SolidWorks常用的宏,一般都是使用VBA來編寫,以.swp為後綴的文件。

1. 首先,是怎麼使用宏文件,有兩種方法。

1.1 自定義宏按鈕,然後要使用的時候點擊按鈕即可。

solidworks宏一般在哪裡(關于SolidWorks宏的使用說明)1

1.2 設置快捷鍵。方法:自定義>鍵盤>宏>新建宏按鈕,見下圖——

solidworks宏一般在哪裡(關于SolidWorks宏的使用說明)2

2. 怎麼編輯宏。2.1 調出宏工具。

solidworks宏一般在哪裡(關于SolidWorks宏的使用說明)3

2.2使用VBA編輯器。

solidworks宏一般在哪裡(關于SolidWorks宏的使用說明)4

3. 使用宏時發生的錯誤。3.1 提示找不到工程或庫,可通過以下的設置修複(不同版本的SW對應不同版本的庫,顯示缺失的時候,可以從下方找到對應版本的庫,打上勾确定即可)。

solidworks宏一般在哪裡(關于SolidWorks宏的使用說明)5

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 LibraryDim swApp As SldWorks.SldWorksDim swModel As SldWorks.ModelDoc2'以下兩行是隐式申明,不需要引用 Sldworks xxxx Type LibraryDim swApp As Object 'as SldWorks.SldWorksDim swModel As Object 'as SldWorks.ModelDoc21.顯式申明(前期綁定)好處:是顯式聲明的對象變量會自動列出相關的屬性和方法,這對寫代碼的人是很友好的。缺點:需要添加引用,引用了低版本的庫,拿到高版本應用中可以正常使用,反過來,引用了高版本的庫,在低版本應用下就無法使用了。2.隐式申明(後期綁定)好處:是不用擔心引用問題,因為沒有引用。隻要宏裡面使用的屬性和方法在當前版本應用中支持,這個宏就能正常運行。缺點:申明的對象變量不會自動列出其支持的屬性和方法,這對寫代碼的人是個考驗。那麼,如果既希望寫代碼方便,又不想擔心各版本引用問題,可以有以下兩全其美的解決辦法:(1)在寫代碼調試時,将需要的引用正常添加(勾選),相關的對象變量也都顯式申明。注:Solidworks及其他常見的軟件一直在更新叠代,相應的API接口也一樣在更新叠代,但都是逐步增加接口的,很多API接口在舊版中老早就存在了。并且為了兼容性,新版會保留支持大部分舊版的接口,所以如果可實現功能,請盡量使用較低版的屬性和方法,這樣你寫的宏可以适用更多的版本。(2)在代碼調試完成後,将不必要的引用去掉,将裡面顯式申明的對象變量改成隐式申明。說明:将顯式申明改為隐式申明後,會存在報錯或不報錯但達不到預期的情況,如果你遇到這樣的情況,不要過來罵我說我騙人,你就繼續顯式申明就是了。。。相關的,這裡也說一下關于一些常量的定義,例如 ModelDoc的類型(一般通過GetType得到),會涉及到如下幾個常量:如果引用了SolidWorks XXXX Constant Type Library,這幾個常量就可以直接用。常量名 常量值swDocASSEMBLY 2swDocDRAWING 3swDocLAYOUT 5swDocNONE 0swDocPART 1swDocSDM 4樣例代碼:if swModel.GetType= swDocPART then ... 如果swModel的類型是swDocPART(零件),則.....如果不想引用相關的常量庫,可以有以下兩種做法:(1). 用對應的常量數值代替(會降低代碼的可讀性,如果對應的數值太多,一般很難記住其含義)以上樣例代碼可以寫成If swModel.GetType= 1 then ... 如果查詢到swModel的類型是1,則... 這樣寫功能與上面的寫法是等效的,但是可讀性就差了,你得記住這裡1的含義是零件模型才能理解這一句的意思。(2).在代碼中自己加入以下常量定義,即可達到和引用常量庫後相同的效果了。Const swDocASSEMBLY = 2Const swDocDRAWING = 3Const swDocLAYOUT = 5Const swDocNONE = 0Const swDocPART = 1Const swDocSDM = 4

VBA宏引用總結

低版本做的宏,高版本可以使用,并且會自動更換新版本的引用

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

所以若考慮通用性的話,做的宏盡量使用低版本的SolidWorks

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved