機械社區(qū)

 找回密碼
 注冊會員

QQ登錄

只需一步,快速開始

搜索
查看: 24907|回復: 27
打印 上一主題 下一主題

關(guān)于solidworks 的二次開發(fā)

[復制鏈接]
跳轉(zhuǎn)到指定樓層
1#
發(fā)表于 2011-2-6 21:54:05 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
我在其他網(wǎng)站上看到的  覺得挺有價值  分享下  希望對大家有所幫助!) P! o( d, k2 I* Y, j; h  M, B" }
、; i% \5 |8 L: ~- x
1 c! I& p! _- f  i9 C) g

$ J0 w- z* L9 i: i' h# W0 引言8 ^) D( w) Z& c* w% z2 q8 ]; ~
   
1 ?) {) ]! P0 G% r. V    SolidWorks是一套基于Windows的CAD桌面集成系統(tǒng),支持參數(shù)化和特征造型技術(shù)。雖然SolidWorks所提供的功能非常強大,但要使其在我國企業(yè)中真正發(fā)揮作用,使常用的或重復的任務自動化,提高效率,就必須對其進行本地化、專業(yè)化的二次開發(fā)工作。本文是在基于軸系結(jié)構(gòu)設(shè)計系統(tǒng)的研制上產(chǎn)生的,應用Solidworks二次開發(fā)來自動生成零件,并在Solidworks環(huán)境下完成自動裝配。
3 C% R' O& |5 P' C3 ~9 G: ~* V; }0 D   
" e7 d$ t6 I) @, u1 [" p5 b    1 SolidWorks二次開發(fā)原理1 I, }1 |, x0 r3 E* f7 [" k% |: P; F+ i
    0 d! ?* q! I0 p
    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技術(shù),通過IDispatch接口暴露對象的屬性和方法,以便在客戶程序中使用這些屬性并調(diào)用它所支持的方法。另一種開發(fā)方式是基于Windows基礎(chǔ)的COM。, ]( S+ p: r4 o/ q0 I: q% ]
   
0 a- d4 O6 K0 Z0 I+ r    SolidWorks API為用戶提供了完全面向?qū)ο蟮念愺w系,是一個自上而下的多層次的樹型網(wǎng)絡結(jié)構(gòu),其部分組織結(jié)構(gòu)關(guān)系如圖l所示。它包括對象的類型、屬性和方法。SldWorks是根目錄對象類,位于應用程序的底層,是訪問SolidWorks API所有對象的入口。開發(fā)者通過操縱對象的屬性和調(diào)用對象的方法建立自己的應用程序。( ]/ S$ ?- @6 M) }6 d( O5 @& P
    0 D( ?; B/ U7 K4 G" K- E
     ; V" U+ ]/ A6 V, M
, `0 [1 e" q( k* b3 R! ~
    + j, h1 T; R6 `* l& \. x  N
    2 SolidWorks二次開發(fā)工具
' W! I: {4 E7 g- P    : y: ], g6 x* u+ i
    任何支持COM和OLE的編程語言都可以成為S0lidWorks的開發(fā)工具,如VB、VBA、C、VC++等。開發(fā)者可以根據(jù)自身的條件、工具的特點,選擇一種適合的開發(fā)工具." M6 A( G8 Y: w# ?: @( k. s
    + j8 U) @( p  ?; Q0 c
    Visual Baic(VB)是運行在Windows環(huán)境下的一種可視化編程語言,使用面向?qū)ο蟮木幊谭椒?OOP),它所具有的圖形設(shè)計工具、結(jié)構(gòu)化的事件驅(qū)動編程模式和開放的環(huán)境,可以使用戶即快又方便地編寫出Windows下的應用程序.
, l9 o! c0 J, ?1 D* K    ( c9 _" T+ {4 L6 w, Z8 Y) f
    在SolidWorks中通過宏錄制可以記錄SolidWorks用戶的整個產(chǎn)品設(shè)計過程,把用戶的界面菜單操作所用到的SolidWorks對象、方法都一一記錄下來,其語法完全符合Visual Basic。根據(jù)宏文件中的對象和方法在自己的應用程序中合理調(diào)用,通過對變量的控制就可實現(xiàn)產(chǎn)品的參數(shù)化設(shè)計。在二次開發(fā)過程中,宏錄制文件中的許多對象、方法可以直接在Visual Basic應用程序中應用,簡化了開發(fā)過程。' v- e: J' v+ [* j$ T( c; C  G6 I
   
$ r8 L# g' G' l    3 機械零件參數(shù)化設(shè)計實現(xiàn)( ?1 b5 l4 ?7 h$ [5 n. j+ V( m/ p6 x
    & r  ?9 F/ C: p% N. Y) p
    3.1 零件二次開發(fā)的過程主要論述通過VB語言對SolidWorks進行二次開發(fā),其主要流程如下:8 l2 G) {5 ^; Z) L& H+ c6 `% S
    + u' G6 g7 o# b( D8 T
    3.1.1 建立零件的數(shù)據(jù)庫首先分析機械零件有關(guān)數(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ù)。
# @& S- B3 h1 \5 ^   
% y( W7 B( i% z2 |. L    3.1.2 分析零件的結(jié)構(gòu)特征,建立實體模型首先,針對要建立的實體,需要先分析其結(jié)構(gòu),區(qū)別特征的主次,利用SolidWorks建立零件特征,建立宏文件,有些操作宏文件無法記錄,需要調(diào)用相關(guān)API繪圖函數(shù)。實現(xiàn)關(guān)鍵數(shù)據(jù)變量化,如齒輪分度圓自徑、齒輪寬度等,而這些變量的數(shù)據(jù)來源即為齒輪數(shù)據(jù)庫下的某種齒輪類型數(shù)據(jù)表。建模完成后,使用AddComponent4方法即可將零件插入當前裝配圖中.* O# h! F/ I& c+ n
    + c0 L8 x3 ]" `3 W8 r0 l3 |7 _
    3.1.3 建立應用程序VB開發(fā)的程序作為客戶方(client),而SolidWorks作為服務方(server),VB程序可建立與SolidWorks各級對象(object)的關(guān)聯(lián);另外,還必須在VB中通過“引用”(reference)JJll載SolidWorks類型庫,使VB識別程序使用的SolidWorks對像類型、屬性和方法。
$ A5 r+ e' S3 @- s! W    1 U) D! D1 |3 I  e( r; |
    3.2 齒輪聯(lián)軸器二次開發(fā)中的關(guān)鍵技術(shù)
" W' X. O! z  n) I! X. M+ F1 P% t    9 h5 y/ z4 v- x
    以機械零件中的齒輪聯(lián)軸器為例介紹二次開發(fā)中的關(guān)鍵技術(shù)。: ?$ S) ^  F5 v9 S' ~* D
    0 c8 R( b, I  x; o- v) u
    3.2.1 聯(lián)軸器數(shù)據(jù)庫技術(shù)CL6型號齒式聯(lián)軸器的部分標準數(shù)據(jù)如表1所示。
* a! M& b' H+ e' u$ u8 V    5 S0 C4 U9 b8 f* D* |! U  S
$ s) s' L. e3 G( B; d# W
    - x/ }. u. [0 }+ B
    建立數(shù)據(jù)庫,在VB程序中引用數(shù)據(jù)庫,就可以通過程序查詢聯(lián)軸器的國家機械標準信息。選擇聯(lián)軸器需要參考聯(lián)軸器的轉(zhuǎn)矩和轉(zhuǎn)速等信息,需要在程序中將聯(lián)軸器的數(shù)據(jù)信息加載到聯(lián)軸器設(shè)計的人機界面當中,供設(shè)計人員參考。
6 |% [7 ]" K! O) x    0 x3 O# M. L! D: p$ l
* s, Z1 I, e! ]3 ^4 M
    齒輪聯(lián)軸器需要做到全參數(shù)化的有齒數(shù)、模數(shù)、壓力角、軸徑、鍵槽尺寸及相關(guān)安裝尺寸等。
, F1 Z7 a, f- U$ c& O   
  r3 v, o# I! i" T4 Z# j' I: V    實現(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方法繪制輪齒草圖, .調(diào)用FeatureManager::FeatureExtmsion2方法拉伸輪齒。! O5 }+ O6 Q# e: S, L$ |
   
( z/ e1 Y0 f0 M0 j* y0 g7 r- k4 \

5 e9 _% D, H7 _    圖2 聯(lián)軸器數(shù)據(jù)流程
   
" r+ a. n4 t1 L3 C    3.2.2 零件、裝配文檔的創(chuàng)建SldWorks對象是SolidWorks API中最高級的對象,它提供了SolidWorksAPI中所有對象的直接或間接接口。通過該對象可以控制SolidWorks軟件的執(zhí)行或退出。在VB中利用Create Object方法來獲得Sldworks對象,利用該對象的activedoc方法可以獲得當前Solidworks文件對象。
( _5 U4 ~0 [2 K! T& K) o    8 z/ P7 ^7 {5 `4 Z' p7 a' I- T$ \
3.2.3 零件自動建模實現(xiàn)創(chuàng)建了新的零件文檔后,通過定義對象與數(shù)據(jù),調(diào)用創(chuàng)建草圖、實體的API函數(shù)來進行零件參數(shù)化建模代碼的編寫。* C1 h0 ^2 R7 I
   
' l- e. {2 m& J; {6 J' \3 N
- W/ `% @; N1 H) l
    3.2.4 自動裝配實現(xiàn)創(chuàng)建了新的裝配文檔后,向裝配體中添加組件。先調(diào)用SldWorks::OpenDoc6方法打開所要添加的組件,再使用AssemblyDoc::addcomponent4函數(shù)往裝配體中插入零部件。
( a0 {/ u9 Q  l% H( v1 ~4 J    0 t3 `  x; p8 E3 Q2 U6 R  t' X
    在Solidworks中,可以使用變換確定或者移動一個部件在裝配體中的物理位置。所有零件和裝配體都有它們各自的原點,當裝配體空間與部件空間不一致時,要使用變換來設(shè)置或獲得部件相對于裝配體的距離和旋轉(zhuǎn)角度。如果半聯(lián)軸節(jié)原點與裝配體原點不同且不同軸,那么AddComponent4方法的位置參數(shù)必須由半聯(lián)軸節(jié)中心乘以半聯(lián)軸節(jié)部件相對于裝配體原點的變換來確定。調(diào)用MathUtility:;CreateTransform方法用來創(chuàng)建MathTransform對象,MathTransform對象是用于操作部件變換信息的接口。
2 _8 E% Z4 B% N; W4 `7 @- f   
! J7 |2 j$ Q! L; ?; x+ s* ~. ?    對零件添加配合關(guān)系之前先使用ModelDocExtension::SelectByID方法選中待配合的零件上的幾何元素,然后使用AssemblyDoc::Addmate3方法定義配合關(guān)系。如果之前已經(jīng)定義過相應的用于配合的基準面和基準軸,會使配合時選取待配合元素變得更為容易。做配合時,需要經(jīng)常選擇到零件的面、線等,所以主要的問題在于如何選擇合適的面、線,同時需要熟練掌握AsemblyDoc::AddMate3函數(shù)的使用。在得到一個組件(component)或者一個特征(feature)時,可以使用Igetfaces、Igeflirstface、Igetnextface等方法遍歷一個組件或特征等的各個面,來達到選擇面的目的。; e; Q, U5 n) W% ]# W* |
    : G: v8 t  R- X$ f0 f
2 E4 O2 ~; Y; i  q) M9 z3 S. Y
    4 開發(fā)人機交互界面及運行結(jié)果
; N: n( Y9 v2 d) j/ S9 L$ q; q    % e4 l+ a4 O, J
    本示例基于作者研制的軸系結(jié)構(gòu)設(shè)計系統(tǒng)。以Vistud Basic語言為開發(fā)平臺通過調(diào)用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)軸器零件的自動裝配。
' \* q" j7 Z9 @& T     ; |( L- H5 }- F8 f

1 J% j4 D- }  j- G1 F" ^' N' m
$ y6 Y+ Z6 ^6 R  r! h+ Y/ m( p
    5 結(jié)語
7 n+ @% }7 O* {  C4 H
    $ c& o2 _) U& ^) L
        論述了SolidWorks軟件的二次開發(fā)原理,介紹了利用VB語言在SolidWorks環(huán)境下實現(xiàn)機械零件自動建模與裝配的可能性及方法,使機械零部件的建模、裝配實現(xiàn)了參數(shù)化、自動化。我們研究的SolidWorks的二次開發(fā)技術(shù)對于減輕設(shè)計人員的工作強度、實現(xiàn)工程設(shè)計的自動化、開發(fā)集成化的CAD系統(tǒng)有很大的作用。$ d: {. ]' o) h' r6 T7 H* r
回復

使用道具 舉報

2#
發(fā)表于 2011-2-7 00:15:42 | 只看該作者
問了好幾天,總算有大俠回應啦$ Q' Z* y8 q3 K) i- x2 \2 ~3 |
只是市面上這樣的書籍資料很難找到
" v& q6 J, p% u& M* M而且做的話自己VB或VC++能力不能差,挺糾結(jié)的
回復 支持 反對

使用道具 舉報

3#
發(fā)表于 2011-2-10 09:11:34 | 只看該作者
不用糾結(jié),找人做就行了啊。
回復 支持 反對

使用道具 舉報

4#
 樓主| 發(fā)表于 2011-2-11 19:05:55 | 只看該作者
對啊。。。這種東西一般都不會是單人搞的。。。要么是企業(yè)要么是團隊。。。。做好自己所擅長的才是正道!!
回復 支持 反對

使用道具 舉報

5#
發(fā)表于 2011-2-11 22:48:47 | 只看該作者
我認識的人里至少有5,6個會SOLIDWORKS二次開發(fā),他們都是在校研究生
回復 支持 反對

使用道具 舉報

6#
發(fā)表于 2011-5-19 16:28:16 | 只看該作者
求助:怎么調(diào)用solidworks自帶的“工具-方程式”功能,就是我點個按鈕,彈出的對話框和點擊方程式菜單一模一樣。謝謝了!

點評

北京愛情故事 http://www.kk321.cc/aiqing/20348/ 星月傳奇 http://www.kk321.cc/dalu/20470/  發(fā)表于 2013-12-30 22:16
回復 支持 反對

使用道具 舉報

7#
 樓主| 發(fā)表于 2011-5-23 22:25:11 | 只看該作者
謝謝各位的回答。。
回復 支持 反對

使用道具 舉報

8#
發(fā)表于 2011-5-28 17:40:08 | 只看該作者
專業(yè)計算機學的不是很好,不過也想學學。
回復 支持 反對

使用道具 舉報

9#
發(fā)表于 2011-10-13 21:33:33 | 只看該作者
現(xiàn)在關(guān)系到一個課題,不知道對于任意空間曲線(任意比較簡單的三維曲線即可)的solidworks模型,能否提取出曲線的方程或者根據(jù)自己的需要,每個一定的間隔取一個點得坐標,這個間隔要比較小,并且可以任意調(diào)節(jié)就最好。8 w2 R  g) y# }8 p
例如:已知曲面A和曲面B的交線,如何從solidworks中提取這條交線的方程或者在這條交線上,我自己設(shè)定每個1mm或者0.1mm的距離上,我取一個點得坐標,從而得到這條曲線上的N個點的坐標值。. b8 d2 E& K, X
出了solidworks,其他軟件要是能實現(xiàn)此功能也可以,比如CAD/PROE/UG等。. ~& i; L7 Z, ^3 u/ k% y! N+ w2 }/ u
聯(lián)系方式:QQ782355668。' Z1 ^8 O+ q; Q) ]
不甚感激!
回復 支持 反對

使用道具 舉報

10#
發(fā)表于 2012-3-11 12:58:31 | 只看該作者
目前正在學習中,感謝分享
回復 支持 反對

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 注冊會員

本版積分規(guī)則

小黑屋|手機版|Archiver|機械社區(qū) ( 京ICP備10217105號-1,京ICP證050210號,浙公網(wǎng)安備33038202004372號 )

GMT+8, 2024-11-21 00:35 , Processed in 0.060793 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回復 返回頂部 返回列表