機械社區(qū)

標題: 關于solidworks 的二次開發(fā) [打印本頁]

作者: dave1115    時間: 2011-2-6 21:54
標題: 關于solidworks 的二次開發(fā)
我在其他網(wǎng)站上看到的  覺得挺有價值  分享下  希望對大家有所幫助!' z7 U6 e9 W* `) a
、
0 A3 V% P( o8 {: e- B* F1 E' d+ @' _$ r0 E2 p/ W
+ F# E/ u/ D) m
0 引言- a/ C( \5 g4 v( K3 @
    8 `: }% n* b/ O5 [* E$ d1 ]6 O! ~( P
    SolidWorks是一套基于Windows的CAD桌面集成系統(tǒng),支持參數(shù)化和特征造型技術。雖然SolidWorks所提供的功能非常強大,但要使其在我國企業(yè)中真正發(fā)揮作用,使常用的或重復的任務自動化,提高效率,就必須對其進行本地化、專業(yè)化的二次開發(fā)工作。本文是在基于軸系結構設計系統(tǒng)的研制上產(chǎn)生的,應用Solidworks二次開發(fā)來自動生成零件,并在Solidworks環(huán)境下完成自動裝配。3 L, }$ A3 b, W9 i/ x- O. z0 F
   
- z2 Q/ i5 m! L6 r; Q' N; s    1 SolidWorks二次開發(fā)原理
9 B  g; S0 v7 [* Y   
! F& E4 V7 d- F. q3 }8 M    SolidWorks基于COM(Component Object Model,組件對象模型),完全支持OLE(Object Linking and Embed-ding,對象的鏈接與嵌入)標準,實現(xiàn)了OLE自動化。為方便用戶進行二次開發(fā),SolidWorks提供了幾百個刪(Application Programming Interface,應用程序接口),這些API函數(shù)是SolidWorks的OLE或COM接口。SolidWorks的API接口分為兩種:一種是基于OLE Au-tomation的IDispatch技術,通過IDispatch接口暴露對象的屬性和方法,以便在客戶程序中使用這些屬性并調用它所支持的方法。另一種開發(fā)方式是基于Windows基礎的COM。3 H3 M& a# R# F; j( k) m
    2 B- T" r+ O: p
    SolidWorks API為用戶提供了完全面向對象的類體系,是一個自上而下的多層次的樹型網(wǎng)絡結構,其部分組織結構關系如圖l所示。它包括對象的類型、屬性和方法。SldWorks是根目錄對象類,位于應用程序的底層,是訪問SolidWorks API所有對象的入口。開發(fā)者通過操縱對象的屬性和調用對象的方法建立自己的應用程序。$ @) K$ g1 A2 p/ v7 ~: v7 i) }" E
    + v$ ~# L3 z# h- e
     
8 s0 f6 c3 k9 ?6 _

7 O' `  y; y) h8 q   
  n2 Z+ A/ Q& ]2 w+ q0 D    2 SolidWorks二次開發(fā)工具
% @& C# n2 o3 C1 ?, N7 }& V    ! d! u3 R- W7 c
    任何支持COM和OLE的編程語言都可以成為S0lidWorks的開發(fā)工具,如VB、VBA、C、VC++等。開發(fā)者可以根據(jù)自身的條件、工具的特點,選擇一種適合的開發(fā)工具.
% F9 x+ @9 j; c+ E    + w7 T4 r' C7 h/ X5 w6 @! e! D
    Visual Baic(VB)是運行在Windows環(huán)境下的一種可視化編程語言,使用面向對象的編程方法(OOP),它所具有的圖形設計工具、結構化的事件驅動編程模式和開放的環(huán)境,可以使用戶即快又方便地編寫出Windows下的應用程序.1 t. Z2 n9 P3 h" A0 ^9 a8 \' O
    3 I4 T+ q8 M) z
    在SolidWorks中通過宏錄制可以記錄SolidWorks用戶的整個產(chǎn)品設計過程,把用戶的界面菜單操作所用到的SolidWorks對象、方法都一一記錄下來,其語法完全符合Visual Basic。根據(jù)宏文件中的對象和方法在自己的應用程序中合理調用,通過對變量的控制就可實現(xiàn)產(chǎn)品的參數(shù)化設計。在二次開發(fā)過程中,宏錄制文件中的許多對象、方法可以直接在Visual Basic應用程序中應用,簡化了開發(fā)過程。
( W) I' c! |5 w5 F3 \  J9 l3 r/ x    $ j0 g* u/ l! V5 t8 ]
    3 機械零件參數(shù)化設計實現(xiàn)# g6 L6 z0 g( |4 K! @
   
5 a! S2 C  [$ w8 t. D3 C    3.1 零件二次開發(fā)的過程主要論述通過VB語言對SolidWorks進行二次開發(fā),其主要流程如下:7 W# _/ T( G- {0 j% X
    $ a% J6 B2 k. x+ d6 [
    3.1.1 建立零件的數(shù)據(jù)庫首先分析機械零件有關數(shù)據(jù),利用VB的默認數(shù)據(jù)庫Access為每一種零件建立數(shù)據(jù)庫,如齒輪參數(shù)數(shù)據(jù)庫,聯(lián)軸器參數(shù)數(shù)據(jù)庫等。在數(shù)據(jù)庫建成后,可以在應用程序中通過數(shù)據(jù)控件與特定的數(shù)據(jù)表連接起來。利用用戶輸入的主參數(shù)作為索引,用Findfirst方法即可讀出對應的數(shù)據(jù)。; J+ N8 p, \* `7 ]( r
    ' a8 |8 S- n0 B- C1 h0 F
    3.1.2 分析零件的結構特征,建立實體模型首先,針對要建立的實體,需要先分析其結構,區(qū)別特征的主次,利用SolidWorks建立零件特征,建立宏文件,有些操作宏文件無法記錄,需要調用相關API繪圖函數(shù)。實現(xiàn)關鍵數(shù)據(jù)變量化,如齒輪分度圓自徑、齒輪寬度等,而這些變量的數(shù)據(jù)來源即為齒輪數(shù)據(jù)庫下的某種齒輪類型數(shù)據(jù)表。建模完成后,使用AddComponent4方法即可將零件插入當前裝配圖中.
& d& H6 x5 u& [  J( I8 q! l& E    . u3 i2 C& x* j5 [5 C
    3.1.3 建立應用程序VB開發(fā)的程序作為客戶方(client),而SolidWorks作為服務方(server),VB程序可建立與SolidWorks各級對象(object)的關聯(lián);另外,還必須在VB中通過“引用”(reference)JJll載SolidWorks類型庫,使VB識別程序使用的SolidWorks對像類型、屬性和方法。
% ?1 l0 e5 e. ]$ b. B* E   
8 u0 N) m- x" x9 R7 T    3.2 齒輪聯(lián)軸器二次開發(fā)中的關鍵技術. k! {! V3 }% \7 F2 j
    + N! K) X9 A3 D* ~! U% h
    以機械零件中的齒輪聯(lián)軸器為例介紹二次開發(fā)中的關鍵技術。8 L( q+ ]5 `: O
   
% }3 P3 Q7 I5 _% V' I. f" P    3.2.1 聯(lián)軸器數(shù)據(jù)庫技術CL6型號齒式聯(lián)軸器的部分標準數(shù)據(jù)如表1所示。
! X) _  b% w- ^& h( j" }    9 t* n/ p, D* X  f

  K' X. E# \0 Y  \9 x    + ]9 ]. \$ Q/ f( z3 H5 P
    建立數(shù)據(jù)庫,在VB程序中引用數(shù)據(jù)庫,就可以通過程序查詢聯(lián)軸器的國家機械標準信息。選擇聯(lián)軸器需要參考聯(lián)軸器的轉矩和轉速等信息,需要在程序中將聯(lián)軸器的數(shù)據(jù)信息加載到聯(lián)軸器設計的人機界面當中,供設計人員參考。
$ j# ~/ Y9 a3 k6 x' X- d5 ]   
# t& S' T; r4 N; \4 _0 A
2 d' a, t7 q6 ]! H/ e9 r
    齒輪聯(lián)軸器需要做到全參數(shù)化的有齒數(shù)、模數(shù)、壓力角、軸徑、鍵槽尺寸及相關安裝尺寸等。
6 `+ r: ?8 k2 y: W    8 a1 F* ?4 m3 _- t: k
    實現(xiàn)模型創(chuàng)建,需通過VB環(huán)境下的數(shù)學模型計算,得出重要數(shù)據(jù)。對于齒輪聯(lián)軸器,最重要的是齒輪漸開線的計算。在VB環(huán)境中,建立漸開線直角坐標方程. 聯(lián)立方程組,利用循環(huán)語句來實現(xiàn)漸開線的計算。再將數(shù)據(jù)傳遞給ModelDoc2:SketchSpline方法繪制輪齒草圖, .調用FeatureManager::FeatureExtmsion2方法拉伸輪齒。
4 Z( S; w0 k( y8 p' W    3 J$ R0 X/ \; N$ ]/ p9 u7 f

0 }- n/ ~; ^% d) M    圖2 聯(lián)軸器數(shù)據(jù)流程
   
: r3 a' v; i, x! c. h    3.2.2 零件、裝配文檔的創(chuàng)建SldWorks對象是SolidWorks API中最高級的對象,它提供了SolidWorksAPI中所有對象的直接或間接接口。通過該對象可以控制SolidWorks軟件的執(zhí)行或退出。在VB中利用Create Object方法來獲得Sldworks對象,利用該對象的activedoc方法可以獲得當前Solidworks文件對象。
0 S* w, S7 J& U3 P) W5 J3 \   
- N# t1 W5 w; X6 X8 R" ^6 B4 |8 |+ b
3.2.3 零件自動建模實現(xiàn)創(chuàng)建了新的零件文檔后,通過定義對象與數(shù)據(jù),調用創(chuàng)建草圖、實體的API函數(shù)來進行零件參數(shù)化建模代碼的編寫。! @3 d" Y9 g1 x  q  M1 B3 ]
    4 }2 D  K5 J# X6 ~; e. x' M

  p7 m2 |* h  L4 N    3.2.4 自動裝配實現(xiàn)創(chuàng)建了新的裝配文檔后,向裝配體中添加組件。先調用SldWorks::OpenDoc6方法打開所要添加的組件,再使用AssemblyDoc::addcomponent4函數(shù)往裝配體中插入零部件。2 C* t1 x8 n% \  _* c
    3 Z' u4 B$ K: A; {8 v7 G  l
    在Solidworks中,可以使用變換確定或者移動一個部件在裝配體中的物理位置。所有零件和裝配體都有它們各自的原點,當裝配體空間與部件空間不一致時,要使用變換來設置或獲得部件相對于裝配體的距離和旋轉角度。如果半聯(lián)軸節(jié)原點與裝配體原點不同且不同軸,那么AddComponent4方法的位置參數(shù)必須由半聯(lián)軸節(jié)中心乘以半聯(lián)軸節(jié)部件相對于裝配體原點的變換來確定。調用MathUtility:;CreateTransform方法用來創(chuàng)建MathTransform對象,MathTransform對象是用于操作部件變換信息的接口。  O; m2 b# B" J
   
# D; @# @. E/ @    對零件添加配合關系之前先使用ModelDocExtension::SelectByID方法選中待配合的零件上的幾何元素,然后使用AssemblyDoc::Addmate3方法定義配合關系。如果之前已經(jīng)定義過相應的用于配合的基準面和基準軸,會使配合時選取待配合元素變得更為容易。做配合時,需要經(jīng)常選擇到零件的面、線等,所以主要的問題在于如何選擇合適的面、線,同時需要熟練掌握AsemblyDoc::AddMate3函數(shù)的使用。在得到一個組件(component)或者一個特征(feature)時,可以使用Igetfaces、Igeflirstface、Igetnextface等方法遍歷一個組件或特征等的各個面,來達到選擇面的目的。1 Y* A7 P2 i+ b# q+ V
    3 d' }7 o" p1 Y$ `( d7 S/ @

8 ]4 f/ v+ j& A- j0 \& Q    4 開發(fā)人機交互界面及運行結果* R* p3 I( w7 x* t+ q$ ~0 w1 E
   
& |# ]# T9 @) F+ Y    本示例基于作者研制的軸系結構設計系統(tǒng)。以Vistud Basic語言為開發(fā)平臺通過調用SolidWorks API函數(shù)建立齒輪聯(lián)軸器模型,操作界面如圖3所示。選擇需要的齒輪聯(lián)軸器類型,點擊“三維模型建立”即可實現(xiàn)在SolidWorks中自動創(chuàng)建相應型號的聯(lián)軸器模型。重新選擇型號,點擊按鈕,新的模型將在Solidworks環(huán)境中重生,程序無需更改。CL6齒式聯(lián)軸器裝配操作界面如圖4所示。添加裝配實體,選擇配合元素與方式,即可在Solidworks環(huán)境下實現(xiàn)聯(lián)軸器零件的自動裝配。
1 h& V+ |: t$ ]- u     * W8 d- N* U& l1 t9 \7 L1 ^

3 q3 [6 F% g2 a+ h4 y& l

2 D- q8 r# R. v3 E/ A' g/ R    5 結語* b, F$ e" a2 X! Q! h
    : V  I( G: x5 B* f7 m0 D. m  H
        論述了SolidWorks軟件的二次開發(fā)原理,介紹了利用VB語言在SolidWorks環(huán)境下實現(xiàn)機械零件自動建模與裝配的可能性及方法,使機械零部件的建模、裝配實現(xiàn)了參數(shù)化、自動化。我們研究的SolidWorks的二次開發(fā)技術對于減輕設計人員的工作強度、實現(xiàn)工程設計的自動化、開發(fā)集成化的CAD系統(tǒng)有很大的作用。
- L3 D# l, q7 B  Z5 }! k
作者: ZX0839    時間: 2011-2-7 00:15
問了好幾天,總算有大俠回應啦
9 u! K* K0 O. \只是市面上這樣的書籍資料很難找到' S3 |2 @+ W! I5 P3 I) f" @
而且做的話自己VB或VC++能力不能差,挺糾結的
作者: tigerguo1975    時間: 2011-2-10 09:11
不用糾結,找人做就行了啊。
作者: dave1115    時間: 2011-2-11 19:05
對啊。。。這種東西一般都不會是單人搞的。。。要么是企業(yè)要么是團隊。。。。做好自己所擅長的才是正道!!
作者: ZX0839    時間: 2011-2-11 22:48
我認識的人里至少有5,6個會SOLIDWORKS二次開發(fā),他們都是在校研究生
作者: anotheranother    時間: 2011-5-19 16:28
求助:怎么調用solidworks自帶的“工具-方程式”功能,就是我點個按鈕,彈出的對話框和點擊方程式菜單一模一樣。謝謝了!
作者: dave1115    時間: 2011-5-23 22:25
謝謝各位的回答。!
作者: chidiandong    時間: 2011-5-28 17:40
專業(yè)計算機學的不是很好,不過也想學學。
作者: 綻放夢想    時間: 2011-10-13 21:33
現(xiàn)在關系到一個課題,不知道對于任意空間曲線(任意比較簡單的三維曲線即可)的solidworks模型,能否提取出曲線的方程或者根據(jù)自己的需要,每個一定的間隔取一個點得坐標,這個間隔要比較小,并且可以任意調節(jié)就最好。
$ r. A/ f6 V  }6 w" N3 G例如:已知曲面A和曲面B的交線,如何從solidworks中提取這條交線的方程或者在這條交線上,我自己設定每個1mm或者0.1mm的距離上,我取一個點得坐標,從而得到這條曲線上的N個點的坐標值。
; s$ I0 n& T% _; {4 ^2 ]出了solidworks,其他軟件要是能實現(xiàn)此功能也可以,比如CAD/PROE/UG等。6 p; M/ [; q9 T" K
聯(lián)系方式:QQ782355668。
& R3 C: t$ }1 p/ G* [" S/ o! P2 c不甚感激!
作者: 宛如青空    時間: 2012-3-11 12:58
目前正在學習中,感謝分享
作者: shudapeng    時間: 2012-3-11 16:36
目前正在學習中,感謝分享
6 J' Z  u) @( C& [3 ~4 k* Q% Z
作者: hdyq2060396    時間: 2012-4-13 12:43
學習學習!。。。!
作者: 哈爾濱-汪歡    時間: 2012-4-27 13:45
以機械零件中的齒輪聯(lián)軸器為例介紹二次開發(fā)中的關鍵技術。0 ?4 g4 O' _$ w: Q8 Q" Q3 J( p

作者: 海邊日出HY    時間: 2012-4-27 21:50
學習下!
作者: 姣兒寶貝87    時間: 2012-6-11 15:08
樓主,您對solidworks二次開發(fā)有研究嗎?最近學習遇到問題,想請指教一下。
作者: 水底的妖嬈海妖    時間: 2012-10-18 10:17
不是很看得懂!糾結中。
作者: charles006    時間: 2013-6-19 16:37
學習一下
作者: 笨小孩啦    時間: 2013-6-20 19:07
看不懂
! A1 ]/ _1 P* r) P8 _; Z
作者: yuanyyhi    時間: 2013-9-16 08:44
非常感謝樓主分享
作者: yifeng0904    時間: 2013-9-16 15:51
這東西,有意思!向往學習!
作者: 天涯唯我    時間: 2013-12-9 16:20
貌似這篇帖子,已經(jīng)很久了才看到因為自己在做二次開發(fā),,單超   很累  ,,而且沒效率、。。
作者: 陽仔    時間: 2014-8-11 23:42
大俠,能不能把程序傳上來看看
作者: 文川九一    時間: 2014-8-27 15:21
從來都沒有各一個講完整工程的
作者: xuanyue0910    時間: 2014-10-24 15:58
最近也想搞這個,本來以為在設計表里面改excle表就可以了,沒想到要用到宏文件!
作者: jiabahanzi    時間: 2014-11-13 19:37
開發(fā)工具用什么編程工具好呢?樓主推薦一下
作者: lijun1226    時間: 2016-1-9 20:17
我是在讀研究生,課題是非圓齒輪在solidworks中的二次開發(fā),不過現(xiàn)在對這個課題全然不懂。那位好心人能指點迷津。我現(xiàn)在還不知道在solidwork中那個界面下做呀。請好心人能指點迷精,不勝感激。
作者: lijun1226    時間: 2016-1-9 20:21
有沒有人正在學solodworkser二次開發(fā)呀。我加他好友。大家有問題商量一下。) H/ i2 d8 s0 V

作者: 塵封JKANG    時間: 2016-1-10 22:17
感謝




歡迎光臨 機械社區(qū) (http://e-learninguniversity.com/) Powered by Discuz! X3.4