SolidWorks專門論壇 SolidWorks forum

 找回密碼
 註冊
查看: 4775|回復: 13

學習Solidwork二次開發

[複製鏈接]
發表於 2018/4/29 15:53:34 | 顯示全部樓層 |閱讀模式
小弟想學習寫Solidworks二次開發,希望各位高手能給個學習的方向,讓小弟在學習時可以少走些彎路

我學習二次開發的動機是無意間看到影片有人在自製程式裡點的按鈕零件就瞬間長出來了
看到的時候覺得實在是太猛了,如果可以學個幾招以後工作上一定可以減少很多重複的動作提升效率

我以前有學過VB.NET,能寫出一些基本的WindowsForm和簡單的Excel VBA
WindowsForm程式WindowsForm

我在網路上找到下面三本書:
SolidWorks 2003二次開發基礎與實例教程
SolidWorks 二次開發實例解析
SolidWorks 二次开发与API

目前的學習方向是先看完這三本書,然後試著寫出書上的範例並瞭解每個語法的用途
如果有問題就用內建的錄製巨集測試一下功能,或是去看看原廠的API Help
然後再將版上有釋出源碼的範例也寫過一遍了解語法和程式邏輯
光是這些應該就可以花掉我好多時間的吧,但不花時間就只能永遠羨慕別人好強自己好廢....

但除了這樣練習之外還有什麼東西是我需要事先了解的嗎?

看到有幾篇討論再講“SWDM-API 許可號碼”,不知道那是什麼東西(猜測沒那個東西沒辦法寫程式???)
理論上每次SolidWorks改版API接口也會新增、修改或廢除
我目前用2014版,不知道有沒有像VB6轉VB.NET那樣非常大的變動呢?
我們公司可能近期會換到2018版,希望不會有14年版的指令學到一半就突然毫無用處的囧境

目前學習進度:
可以用WindowsForm開啟SolidWorks進入新零件視窗
下個目標是用程式建立草圖與實體特徵
發表於 2018/4/29 17:33:54 | 顯示全部樓層
希望不會有14年版的指令學到一半就突然毫無用處的囧境? 為何會學到一半無用處?

點評

其實這也只是我的猜測,我也只是剛開始看API接口,對於整體架構還不是很了解 以前聽說VB6轉VB.NET會有很多程式碼不能無痛轉移(好像是因為多了物件導向概念?),不知道SolidWorks近幾年升版時的API接口變動(新增、修  詳情 回復 發表於 2018/4/29 18:09
 樓主| 發表於 2018/4/29 18:09:38 | 顯示全部樓層
武大郎 發表於 2018/4/29 17:33
希望不會有14年版的指令學到一半就突然毫無用處的囧境? 為何會學到一半無用處? ...

其實這也只是我的猜測,我也只是剛開始看API接口,對於整體架構還不是很了解

以前聽說VB6轉VB.NET會有很多程式碼不能無痛轉移(好像是因為多了物件導向概念?),不知道SolidWorks近幾年升版時的API接口變動(新增、修改、廢除)有沒有在架構上完全砍掉重練?
發表於 2018/4/29 22:53:20 | 顯示全部樓層
SWDM-API  與 SW-API是不一樣的東西 ,SDWM-API 我比較少接觸,我只有用SW-API寫程式。
SW錄製巨集是寫程式的第一步,我也是從這步開始學起。
錄製完的巨集有時很多東西都是多寫的, 所以修改巨集是第二步
要修改巨集當然是要多了解sw-api一些的東西。API-HELP 有很多寶可以摸索的,加油.附件為網路找到sw-api 的樹狀圖,許多的東西都是一層一層的去寫的.
apitut_4a004.gif

點評

這樹狀圖的層級和Excel API挺像的(Excel.Application-> Workbooks -> Worksheet) 想請問SW-API和SWDM-API有什麼差異嗎? 我看API Help上面列出的最上層樹狀圖列表 看起來像是依照SolidWorks系列的軟體做分類 目前書  詳情 回復 發表於 2018/4/30 08:41
 樓主| 發表於 2018/4/30 08:41:12 | 顯示全部樓層
kkovgto 發表於 2018/4/29 22:53
SWDM-API  與 SW-API是不一樣的東西 ,SDWM-API 我比較少接觸,我只有用SW-API寫程式。
SW錄製巨集是寫程式 ...

這樹狀圖的層級和Excel API挺像的(Excel.Application-> Workbooks -> Worksheet)

想請問SW-API和SWDM-API有什麼差異嗎?
我看API Help上面列出的最上層樹狀圖列表
看起來像是依照SolidWorks系列的軟體做分類
目前書上看到的指令幾乎都是來自"SolidWorks.Interop.sldworks"這個命名空間
所以你說的SW-API是指這個嗎?


版上有篇帖子"無需運行SOLIDWORKS程序, 批量修改SOLIDWORKS檔案屬性"

有提到API 的許可證密碼,你知道那是什麼嗎?
是不是沒有那個東西我就只能錄製巨集,不能用VB或C#去寫二次開發了

SolidWorks API Tutorial 1 of 5: How to install the SolidWorks Software Development Kit (SDK)
我照這個影片裝了SolidWorks API SDK,但沒辦法像影片上出現新的專案開發選向,不知道是發生了什麼問題
其實沒有那個東西我好像也可以引用sldworks命名空間下的東西去調用API,所以其實不太了解這是幹嘛用的...


無需運行SOLIDWORKS程序, 批量修改SOLIDWORKS檔案屬性

無需運行SOLIDWORKS程序, 批量修改SOLIDWORKS檔案屬性

SoldiWorks API Hele

SoldiWorks API Hele
發表於 2018/4/30 20:03:09 | 顯示全部樓層
SW-API和SWDM-API的差異,你其實可以google 一下 "SWDM-API" 論壇悶大前輩有說明過了
只要你會錄製巨集,你有研究一下,就會發現他就是 Solidworks VBA,跟 Excel VBA類似只是物件不同
很多你在Excel 裡寫的VBA很多相同的東西都可以用。
不用安裝什麼插件。
如果你想要用excel 連結solidworks  或是用 VB軟體連結solidworks 你就必需從參照那裡引用三個東西
1.sldworks 20xx Type Library ←20xx 指的是 solidworks 的版本
2.Solidworks 20xx Commands type library
3.Solidworks 20xx constant type library

你可以研究 API help 裡面的東西

如果我要查路徑
Dim swApp As SldWorks.SldWorks
Dim part As SldWorks.ModelDoc2
Sub main()
Set swApp = GetObject(, "Sldworks.Application")
Set part = swApp.ActiveDoc '這句寫的是目前的文件
Debug.Print part.GetPathName '有存檔後才會出現
Debug.Print part.GetTitle '目前文件名
Debug.Print part.GetCustomInfoValue("預設", "重量") '這句是查屬性用的,預設指的是組態,重量是查詢的目標
....

End Sub

大概是這樣寫..




點評

有看到悶大在其他論壇說明SWDM-API的文章了,我在好好研究一下 感謝你提供的簡易範例,真的要花時間好好練功了!!  詳情 回復 發表於 2018/4/30 20:31
 樓主| 發表於 2018/4/30 20:31:16 | 顯示全部樓層
kkovgto 發表於 2018/4/30 20:03
SW-API和SWDM-API的差異,你其實可以google 一下 "SWDM-API" 論壇悶大前輩有說明過了
只要你會錄製巨集,你 ...

有看到悶大在其他論壇說明SWDM-API的文章了,我在好好研究一下

感謝你提供的簡易範例,真的要花時間好好練功了!!

點評

在API Help中看到SWDM-API許可碼的流程,馬上來申請試試看 我的英文實在是爛到沒救,所以下意識排除英文相關的訊息 但是這些資源幾乎都是以英文為主,原廠API討論區也是以英文交流 因為對二次開發很有興趣,所以只  詳情 回復 發表於 2018/4/30 21:05
 樓主| 發表於 2018/4/30 21:05:23 | 顯示全部樓層
jbkndron 發表於 2018/4/30 20:31
有看到悶大在其他論壇說明SWDM-API的文章了,我在好好研究一下

感謝你提供的簡易範例,真的要花時間好好 ...

在API Help中看到SWDM-API許可碼的流程,馬上來申請試試看

我的英文實在是爛到沒救,所以下意識排除英文相關的訊息
但是這些資源幾乎都是以英文為主,原廠API討論區也是以英文交流
因為對二次開發很有興趣,所以只能用google翻譯加減看看資料

如果沒有google大神翻譯,我應該也沒戲唱了...
發表於 2018/4/30 21:12:35 | 顯示全部樓層
嗯~~這部份我就沒研究了~~加油~~
只是比較好奇的部份是學習SWDM-API的動機在哪呢?

點評

目前還沒有實際寫過”SOLIDWORKS API“和“SOLIDWORKS Document Manager API”的程式,但是這兩個命名空間下的指令數量實在是天與地的差別啊 就我目前看到的資料所做的結論 SOLIDWORKS API是以原本繪圖軟體的所有功  詳情 回復 發表於 2018/4/30 22:20
 樓主| 發表於 2018/4/30 22:20:40 | 顯示全部樓層
kkovgto 發表於 2018/4/30 21:12
嗯~~這部份我就沒研究了~~加油~~
只是比較好奇的部份是學習SWDM-API的動機在哪呢?
...

目前還沒有實際寫過”SOLIDWORKS API“和“SOLIDWORKS Document Manager API”的程式,但是這兩個命名空間下的指令數量實在是天與地的差別啊

就我目前看到的資料所做的結論
SOLIDWORKS API是以原本繪圖軟體的所有功能為主,依附在SolidWorks軟體下
SOLIDWORKS Document Manager API則是編輯文件屬性(除了建模、組裝、2D工程圖),不用SolidWorks軟體也可以使用

看起來SWDM-API做的事情比較單純,指令也少了很多,所以想從比較容易的開始學起,才不會學的太痛苦沒成就感然後就放棄了

但是VBA錄製的指令好像都是從"SolidWorks.Interop.sldworks"這個命名空間出來的,不知道會不會增加學習的難度...
發表於 2018/4/30 22:37:09 | 顯示全部樓層
我覺得學哪個都沒差,只要你覺得你想達成哪個目的就去學習那個, solidworks api能開發的東西很多,
我覺得如果把api的東西,學完肯定有難度
就一步一步的去實現你想學的東西吧,
我一開始的目的是想說零件裡的屬性每次都要一個一個的key真很很累 ,
才會想開始學。
可是當你真的有寫出你所期望的功能,真的會有成就感。
https://www.youtube.com/watch?v=0hdSgJFp_6k
↑影片最近的研究

點評

因為工作上是用SolidWorks,所以一定有很多事情可以寫成自動執行的程式 是說學會所有API指令只能當成理想,如果不是專門靠二次開發吃飯的,精通的陳本實在太高了... 看到那種自動生成零件的速度,真的是讓人流口水  詳情 回復 發表於 2018/5/1 06:00
 樓主| 發表於 2018/5/1 06:00:04 | 顯示全部樓層
kkovgto 發表於 2018/4/30 22:37
我覺得學哪個都沒差,只要你覺得你想達成哪個目的就去學習那個, solidworks api能開發的東西很多,
我覺得 ...

因為工作上是用SolidWorks,所以一定有很多事情可以寫成自動執行的程式

是說學會所有API指令只能當成理想,如果不是專門靠二次開發吃飯的,精通的陳本實在太高了...

看到那種自動生成零件的速度,真的是讓人流口水啊
能夠把這些雜事自動化,我們就有更多的空閒來研究API了!!!

文檔管理只要是有畫圖的應該都會有這個需求,所以目前會先以這個為學習目標,這樣應該可以馬上讓工作效率提升
但其實我比較有興趣的是自動生成零組件,沒什麼特別的原因,就是覺得看著很炫

點評

我也是工作上要轉用SolidWorks,有用API寫成自動執行的話,可以省下很多時間  詳情 回復 發表於 2018/5/15 15:42
發表於 2018/5/1 09:31:18 | 顯示全部樓層
大郎支持你~加油
發表於 2018/5/15 15:42:01 | 顯示全部樓層
jbkndron 發表於 2018/5/1 06:00
因為工作上是用SolidWorks,所以一定有很多事情可以寫成自動執行的程式

是說學會所有API指令只能當成理 ...

我也是工作上要轉用SolidWorks,有用API寫成自動執行的話,可以省下很多時間
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

手機版上論壇|論壇來自幾何科技 論壇架構版次 20240312

GMT+8, 2024/4/27 00:49 , Processed in 0.258420 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

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