一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Solidworks模型文件的自定義屬性設置--宏

 偷心無痕 2014-05-10
SolidWorks API是SolidWorks的OLE應用程序開發(fā)接口,用戶可以利用它并通過支持OLE編程的開發(fā)工具,如Visual Basici、VBA(Excel,Access)、C、VC、C++等對SolidWorks進行二次開發(fā),建立適合用戶需要的、專用的SolidWorks 功能模塊。本文通過介紹“自定義屬性”這個程序的開發(fā)和使用過程,來簡單地說明一下SolidWorks API的應用,希望起到拋磚引玉的作用。

一、問題的提出

大多數(shù)工程圖紙的標題欄中應該包括一些基本的設計信息,如零件名稱、零件代號、材料以及設計人員和設計日期等方面的信息,其中,零件的名稱、代號、材料、數(shù)量、重量、一些重要的后處理要求等信息還應該出現(xiàn)在裝配圖的材料明細表(BOM)中。這些內容如果在工程圖中一一進行編寫和修改,其工作量是很大的,并且這種處理方法也不利于保證設計信息的一致性,對模型文件(零件或裝配體文件)和圖紙文件的管理來講是脫節(jié)的。 SolidWorks是一個全相關的三維機械設計軟件,模型文件中的設計數(shù)據(jù),如尺寸、注釋、文件屬性等內容與工程圖相關,因此,我們在處理上述工程圖標題欄和材料明細表中的設計數(shù)據(jù)時,應該將這些內容保存在模型文件中,并且自動顯示在工程圖相應的位置上。當需要對工程圖中的內容進行修改時,直接修改模型文件中的相應數(shù)據(jù)即可實現(xiàn)。這樣的處理方法不僅保證了設計信息的一致性,而且可以大大提高設計效率。 根據(jù)這個設想,我們將這些設計信息進行了歸納,并將它們作為模型文件的自定義屬性保存在模型文件指定配置的屬性(在SolidWorks中,選擇菜單“文件/屬性”,單擊“指定配置”標簽,如圖1所示)中,針對模型文件指定配置的這些屬性可以自動帶入到工程圖的標題欄和材料明細表。

點擊查看完整圖片

圖1 指定模型當前配的屬性

圖1中自定義屬性的含義和解釋如下表:

含義
代號
說明
零件代號
PartID
零件代號是零件的標識,在整個企業(yè)中是唯一的
零件名稱
采用模型名稱,即保存模型文件的文件名稱,這樣工程圖的文件名可以自動默認為模型的文件名稱
材料
Material
零件的材料,對裝配圖是可選項
后處理
Description
零件的后處理情況,對裝配圖是可選項
設計人員
Designed By
圖紙設計人員姓名
設計日期
Designed Date
圖紙完成日期

采用這樣的方法處理以后,需要在工程圖格式文件的相應位置建立包含這些變量的注釋文本即可。同時,對于材料明細表模板進行修改或建立新的明細表模板就可以在裝配圖中的材料明細表中顯示所需要的設計信息(工程圖格式文件的定義和材料明細表模板的定義,請參閱《SolidWorks2001中文版實用技術精粹》一書)。因此,無論何時需要修改設計信息,只需在SolidWorks中打開相應的模型文件,修改指定配置的屬性就可以實現(xiàn)。

然而,即使采用的這樣的處理方法,在修改文件當前配置的屬性時仍然顯得有些繁瑣,能否為SolidWorks建立一個工作界面,可以更加方便地添加和修改這些信息就成了問題的關鍵。

二、自定義屬性Cpbom


為了更大程度地提高工作效率,我們利用VB6.0通過SolidWorks API建立了自定義屬性設置程序——Cpbom,這個程序本程序通過一個對話界面直接對當前模型文件的當前配置添加或修改自定義屬性,其基本功能如下:
  • 針對配置添加模型文件的自定義屬性;
  • 設置的項目包括:零件代號、材料名稱、后處理、設計者姓名、設計日期;
  • 確定自定義屬性后,自動保存文件;如當前文件還沒有保存,提示文件保存路徑和文件名稱;
  • 針對裝配文件,可以選擇是否刪除“材料”和“后處理”兩個屬性。
  • 本程序利用VB進行編譯生成可執(zhí)行文件,其界面如圖2所示。
點擊查看完整圖片
圖2 自定義屬性界面
“自定義屬性”程序就是通過SolidWorks API對當前模型文件中當前配置的自定義屬性的名稱和值進行“讀”和“寫”的操作,程序非常簡單,這里介紹一下該程序中用到的一些SolidWorks API的對象和方法:

1.SldWorks對象:


這是SolidWorks API的最高級別的對象。通過該對象可以控制SolidWorks軟件的執(zhí)行或退出,以及SolidWorks文件的建立、打開、關閉等操作。在VB中利用CreateObject方法來獲得SldWorks對象,利用該對象的activedoc方法可以獲得當前SolidWorks文件對象,文件對象為空時,表示SolidWorks沒有打開任何文件。如:
Dim swApp As Object
Dim activeDocument As Object
Set swApp = CreateObject("SldWorks.Application")
Set activeDocument = swApp.activedoc
If (activeDocument Is Nothing) Then
Dim Msg, Style, title
Style = vbExclamation
title = "模型自定義屬性"
Msg = "請首先打開一個Solidworks模型文件"
Call MsgBox(Msg, Style, title) ' Display error message
End
End If

2.獲取當前文件信息


自定義屬性程序是對模型文件設置自定義屬性,與工程圖文件無關,因此需要利用GetType方法獲得當前文件的類型,并利用Gettitle()方法和Getpathname()方法獲得當前文件的名稱和存盤路徑。如:
Dim docType As Long
Dim docName As String
Dim filename As String
Dim FilePath as String
docType = activeDocument.GetType
If (docType = swDocPART) Then
docName = "零件"
With CPbomfrm
.deldescription.Enabled = False
.delmaterial.Enabled = False
End With
Picture5.Picture = Picture3.Picture
ElseIf (docType = swDocASSEMBLY) Then
docName = "裝配"
Picture5.Picture = Picture2.Picture
ElseIf (docType = swDocDRAWING) Then
Style = vbExclamation
Msg = "當前文件是工程圖文件,請打開零件或裝配文件"
Call MsgBox(Msg, Style, title) ' Display error message
End
End If
filename = activeDocument.GETTITLE()
FilePath = activeDocument.getpathname()

3.獲取文件配置名稱


SolidWorks API提供了按照配置名稱訪問自定義屬性的方法——CustomInfo2(讀取自定義屬性的值)、deletecustominfo2(刪除指定的自定義屬性)、ADDcustominfo3(添加自定義屬性的名稱和參數(shù)值),這些方法都要求指定文件的配置名稱。因此,為了對當前模型文件當前配置設定自定義屬性,必須首先要獲得當前配置的名稱,
利用GetActiveConfiguration()方法可以獲得當前模型文件配置的對象,并利用Name方法獲得當前配置的名稱,如:
Dim ConfName As String
Set CurCFG = activeDocument.GetActiveConfiguration()
ConfName = CurCFG.Name

4.按照配置訪問自定義屬性


在本程序中,我們對于指定配置的屬性設置按照如下的步驟:
1) 按照配置名稱讀取文件中的自定義屬性值,并賦值于相應的文本框;
2) 判定當前文件和當前配置是否已經改變,如其中之一發(fā)生變化,則提示錯誤信息;
3) 根據(jù)配置名稱刪除指定的自定義屬性;
4) 將相應文本框中的內容按照配置名稱添加到模型文件自定義屬性名稱和參數(shù)值。
下面說明一下上述控制配置自定義屬性的三種方法:
l CustomInfo2:獲取或設置當前文檔指定配置的自定義屬性的值
value = ModelDoc.CustomInfo2 (configuration, fieldName)
其中: configuration為配置名稱;
fieldName為自定義屬性的名稱;
l deletecustominfo2:刪除當前文檔指定配置的自定義屬性的值
retval = ModelDoc.DeleteCustomInfo2( configuration, FieldName )
l ADDcustominfo3:向當前文檔中指定的配置添加自定義屬性以及值
retval = ModelDoc.AddCustomInfo3 ( configuration, FieldName, FieldType, FieldValue )
其中: FieldType為自定義屬性的類型
FieldValue為自定義屬性的值
下面這段代碼是單擊“確定”的子程序,為了簡單起見,只給出了其中一個自定義屬性的處理過程。
Private Sub cmd_OK_Click()
On Error GoTo ERR_91
Dim swApp2 As Object
Dim activeDocument2 As Object
Dim curcfg2 As Object
Dim cfgname2 As String
Dim retval As Boolean
Set swApp2 = CreateObject("SldWorks.Application")
Set activeDocument2 = swApp2.activedoc
Set curcfg2 = activeDocument2.GetActiveConfiguration()
cfgname2 = curcfg2.Name
' 判斷文件或配置是否改變,如改變,則提示錯誤。
If cfgname2 = ConfName And FilePath = activeDocument2.getpathname() Then
' 刪除屬性設置
retval = activeDocument2.deletecustominfo2(ConfName, "PartID")
' 添加屬性
retval = activeDocument2.ADDcustominfo3(ConfName, "PartID", swCustomInfoText, frmPartID)
' 保存文件
retval = activeDocument2.Save()
Else
Style = vbExclamation
title = "模型自定義屬性"
Msg = "錯誤:打開的文件或配置已經改變!" & Chr(10) & "請重新執(zhí)行本程序"
Call MsgBox(Msg, Style, title)
End
End If
ERR_91:
Style = vbExclamation
title = "模型自定義屬性"
Msg = "程序運行錯誤,文件可能已經關閉" & Chr(10) & "自定義屬性無法添加,單擊確定退出!"
Call MsgBox(Msg, Style, title)
End
End Sub

三、在SolidWorks界面中執(zhí)行應用程序


對于使用VB編譯的EXE,DLL文件,目前SolidWorks還不能直接支持這些文件作為插件使用,如果要在SolidWorks 中直接調用通過VB編譯的可執(zhí)行程序,可以使用SolidWorks“宏”操作來進行。利用“宏”在SolidWorks界面中添加指定的應用程序后,就好像SolidWorks調用了自身的功能一樣,利用類似的方法,可以在SolidWorks添加任何可執(zhí)行的文件。下面利用“自定義屬性”程序來說明一下步驟:

1.建立“宏”文件


SolidWorks中,我們利用錄制并修改“宏”的方法來建立所需要的“宏”文件。
1) 選擇菜單“工具/宏操作/錄制”。
2) 停止錄制,并保存宏文件。給定文件名稱如:Cpbom.swp。
3) 選擇菜單“工具/宏操作/編輯”,把Cpbom.swp “宏”文件錄制的內容全部刪除,并輸入下面的內容,如圖3所示:
4) 保存并退出宏編輯,返回到SolidWorks環(huán)境。
Sub main()
MyAppID = Shell("C:\Program Files\CPbom\CPbom.exe", 1)
AppActivate MyAppID
End Sub
點擊查看完整圖片
圖3 編輯“宏”

2.指定“宏”操作


SolidWorks中可以指定宏命令的文件位置,并定制工具欄,將所執(zhí)行的宏操作按鈕添加到指定的位置上。
1) 選擇菜單“工具/自定義/宏”,在“自定義”對話框中單擊“宏”標簽,如圖4所示;
點擊查看完整圖片
圖4 自定義宏操作
2) 參考圖4的內容添加宏,單擊“應用”完成;
3) 在“自定義”對話框中單擊“命令”標簽,從“類別”列表框中選擇“宏”,將所定義的宏(第1個)的圖標按鈕拖到相應的工具欄中,如圖5所示;
4) 單擊“確定”按鈕,完成宏定義和工具欄定義。
點擊查看完整圖片
圖5 自定義工具欄

3.執(zhí)行應用程序


定義“宏”以后,單擊相應的圖標就可以在SolidWorks 中直接執(zhí)行應用程序,如圖6所示。
點擊查看完整圖片
圖6 在SolidWorks中執(zhí)行應用程序

四、總結


我們利用這個“自定義屬性”程序,明顯提高了工作效率。需要說明的是,SolidWorks API的對象和方法十分豐富,涵蓋了所有SolidWorks數(shù)據(jù)模型,這里只介紹了其冰山之一角。另外,程序中提及的自定義屬性與企業(yè)的要求有關,并根據(jù)自己的需要開發(fā)適合需要的自定義屬性設置程序。

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    亚洲婷婷开心色四房播播| 亚洲伦理中文字幕在线观看| 欧美欧美欧美欧美一区| 午夜视频成人在线免费| 日韩精品人妻少妇一区二区| 欧美丰满人妻少妇精品| 久久精品国产在热久久| 日韩欧美好看的剧情片免费| 人妻熟女欲求不满一区二区| 久久偷拍视频免费观看| 插进她的身体里在线观看骚| av一区二区三区天堂| 五月天丁香婷婷狠狠爱| 国产精品一区二区三区欧美| 亚洲另类欧美综合日韩精品 | 都市激情小说在线一区二区三区| 中国美女草逼一级黄片视频| 一二区不卡不卡在线观看| 美国女大兵激情豪放视频播放| 亚洲综合香蕉在线视频| 欧美日韩国产的另类视频| 中文字幕一区二区久久综合| 初尝人妻少妇中文字幕在线| 久久福利视频在线观看| 亚洲欧美一二区日韩高清在线| 午夜久久精品福利视频| 国产一区二区精品高清免费| 国产中文字幕一区二区| 欧美日韩精品人妻二区三区| 亚洲中文字幕乱码亚洲| 欧美日韩中国性生活视频| 国产一级内片内射免费看| 欧美日韩欧美国产另类| 免费黄色一区二区三区| 99一级特黄色性生活片| 日韩欧美亚洲综合在线| 色无极东京热男人的天堂| 91欧美一区二区三区| 国产免费无遮挡精品视频| 午夜福利激情性生活免费视频| 黄男女激情一区二区三区|