SolidWorks專門論壇 SolidWorks forum

 找回密碼
 註冊
查看: 70802|回復: 170

Excel 批量修改SW檔案屬性 (無需 SWDM-API 許可號碼)

[複製鏈接]
發表於 2014/10/20 18:31:57 | 顯示全部樓層 |閱讀模式
詳見6樓

利用 Excel 批量修改SW檔案自訂屬性及模型組態指定 (無需 SWDM-API 許可號碼)

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有賬號?註冊

x
發表於 2014/10/21 09:20:52 | 顯示全部樓層
悶大早安。這個無需許可號的 SW-API 也的確好使的~
有一個大問題想請教悶大:
它是否也能像 SWDM 一樣,在讀取和寫入屬性時,整合檔案類型呢?
(下面貼個圖,是我自己用悶大的代碼亂搞的,結果竟然可以用!但就是多了幾個鈕…)


本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有賬號?註冊

x
發表於 2014/10/21 10:17:48 | 顯示全部樓層
這個也是速度飛快阿~~~謝謝悶大

悶大這代碼有用上之前提過的"以顏色顯示檔案是否已經被處理"對嗎? 這樣真方便ㄟ


晚點應該可以試用"
http://www.solidworks.org.tw/for ... 9&fromuid=26509
提取工程圖內的零組件屬性",試用完再來向您報告。

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有賬號?註冊

x
發表於 2014/10/21 22:37:06 | 顯示全部樓層
Francis 發表於 2014/10/21 17:37
是不是丹哥自行成功修改程式碼整合了檔案的不同類型呀?

可知道悶人還沒成功整合檔案類型, 因為零件和組 ...

回覆悶哥~

這3段代碼我有測試成功~
只是我少用工程圖屬性,我比較需要零件的屬性

真的很想整合檔案不同類型~
但是VBA 近期才知道它(因為悶哥這2篇教學)~VBA真的很不熟~也不懂
所以只能用悶哥給的代碼跟中文意思
去試試看~不過還是失敗~

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有賬號?註冊

x
發表於 2014/10/22 01:21:43 | 顯示全部樓層
Francis 發表於 2014/10/21 17:37
是不是丹哥自行成功修改程式碼整合了檔案的不同類型呀?

可知道悶人還沒成功整合檔案類型, 因為零件和組 ...

回悶大,謝謝您還在幫大家思考更深入的使用方式。
您一定一眼就看出阿丹就是依您的代碼更改打開的類型而已…實屬瞎整的,
不敢說有方向…更遑論說「已解決」呀!!!
期待大家更進一步的討論和悶大的教程!
 樓主| 發表於 2014/10/28 18:36:46 | 顯示全部樓層
阿丹曾經要求過整合類型及配置(模型組態),經過一番努力後,找到了笨拙的對應方法。

因為自訂屬性和組態指定都有人採用,是必須顧及的,所以分為5種類型,分別是零件、零件含組態、組合件、組合件含組態和工程圖,如下圖:

模型組態方面的難處是,組態屬於每個檔案的分支,而Excel的表單是二維的,要在同一表單同時處理三類的資料(檔案名稱、組態名稱及屬性),原則上是不可能的,
唯有把檔案名稱和組態名稱合二為一,每一個模型組態當成是獨立的檔案來看待,這樣就可以套用於二維的Excel表單上了,如下圖:


Excel檔案的說明:
1. 首列是用來安放按鈕,第二列是正式表頭,第三列起是資料內容。
2. 除了首三個欄位(路徑、檔案名稱及組態名稱),之後的都是屬性名稱,可隨意修改或添加,沒有上限的。
3. 選擇檔案時可以同時選擇多個檔案,點選後再次點選的話,就會往下繼續添加,注意是不會過濾重複檔案的。
4. 可以利用Excel本身功能快速清空表單,例如框選後按Delete鍵。
5. 在還未熟練前,不要直接以有用資料來做實驗,可以複製到別處試驗,以免因失誤搞壞資料。
密碼:thankyou
回覆後按 Ctrl+A 看密碼。

有另一高速版本在以下帖子#88樓
http://www.solidworks.org.tw/for ... =210226&fromuid=151

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有賬號?註冊

x
發表於 2014/10/28 18:57:52 | 顯示全部樓層
Francis 發表於 2014/10/28 18:36
阿丹曾經要求過整合類型及配置(模型組態),經過一番努力後,找到了笨拙的對應方法。

因為自訂屬性和組態 ...
悶大辛苦的成果,我不客氣收下了。
謝謝悶大無私分享寶貴作品。
雖然說悶大有設定解壓縮密碼,但是被我誤打誤撞矇到了。可以勞煩悶大公佈給其他人嗎?或者是讓我代其勞?

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有賬號?註冊

x
 樓主| 發表於 2014/10/28 21:25:37 | 顯示全部樓層
臭臉翔 發表於 2014/10/28 18:57
悶大辛苦的成果,我不客氣收下了。

謝謝悶大無私分享寶貴作品。

謝臭弟及梧桐提醒,已經加上提示字句。(按Ctrl+A看密碼)

發表於 2014/10/31 16:58:23 | 顯示全部樓層
这个适用于2015版

能不能做成SWDM-API 的样式
(很贪婪)
發表於 2014/10/31 17:18:42 | 顯示全部樓層
wutong490 發表於 2014/10/31 16:58
这个适用于2015版

能不能做成SWDM-API 的样式

原因好像是出在"許可碼"
 樓主| 發表於 2014/10/31 22:20:18 | 顯示全部樓層
wutong490 發表於 2014/10/31 16:58
这个适用于2015版

能不能做成SWDM-API 的样式

可以的,現在開始修改,改好後會連同代碼一起貼出來。
(注意:這是慢速版本啊)

如有2015的許可號碼,可自行製作快速版本,詳見連接:
http://www.solidworks.org.tw/for ... =210422&fromuid=151
 樓主| 發表於 2014/11/14 14:42:17 | 顯示全部樓層
臭臉翔 發表於 2014/10/31 17:18
原因好像是出在"許可碼"

臭弟誤會了梧桐兄的意思了。


完整句子是:
試過这个無需 SWDM-API 許可號碼的程序适用于2015版

能不能改良一下這個程序做成與需要SWDM-API許可號碼那個程序 的样式一樣呢?
我是不是很贪婪呀?


先要向可能會產生Hard Feeling的臭弟說句不好意思,不是在挑剔臭弟,而是犧牲臭弟頂出糗例子,希望可以提倡互相體諒的意識,可讓往後討論更為暢順。

另外,正在歸納臭弟的『從總組件開啟往下所有相關工程圖的巨集』,看看能否與這一個程序融合,還在努力中,請臭弟稍等。
發表於 2014/11/14 14:59:49 | 顯示全部樓層
Francis 發表於 2014/11/14 14:42
臭弟誤會了梧桐兄的意思了。


完整句子是:
原來是這樣阿
-----------------------------------------------------------
悶哥放心,我習慣從錯誤中學習
真的麻煩你了,一直記得我的需求與學習。
我正在加緊工作進度,想早點把"推車"給完成

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有賬號?註冊

x
發表於 2015/11/27 16:07:53 | 顯示全部樓層
愚鈍的肉腳此篇花了許久的時間研究
終於理解如何使用
由衷的感謝悶哥無私分享與教導後輩
也感謝其他參與討論的前輩 , 讓此程式碼更完整
肉腳底子不夠厚實 , 看起程式碼頗為吃力
實在不敢任意參與討論 , 請見諒
此工具搭配隨身攜帶整套,零件,組件,工程圖
事半功倍 , 相當好用

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有賬號?註冊

x
發表於 2015/11/27 16:46:28 | 顯示全部樓層
提供一下么感激不尽,我在好多论坛里求助都没找到,终于找到了,我有急用
發表於 2015/11/27 17:23:47 | 顯示全部樓層
哈哈谢谢分享,试用了一下非,常好用,要是能改“配置特定”就更完美啦
lxlaner 該用戶已被刪除
發表於 2015/12/26 22:25:26 | 顯示全部樓層
利用 Excel 批量修改SW檔案屬性 (無需 SWDM-API 許可號碼)
今天来学习,明天来回报
發表於 2015/12/31 10:06:39 | 顯示全部樓層
新人學習ING 以往公司不需要 可是新公司以前的設計都是外包
現在要收回來 圖面 圖號 圖名 各種雜亂
發表於 2016/4/16 20:25:04 | 顯示全部樓層
最近做一个小项目需要经常参考前期的图纸。改名和改属性成了我头痛的问题现在找到组织了。都是大神啊
發表於 2016/4/16 20:26:03 | 顯示全部樓層
Francis 發表於 2014/10/28 18:36
阿丹曾經要求過整合類型及配置(模型組態),經過一番努力後,找到了笨拙的對應方法。

因為自訂屬性和組態 ...

最近做一个项目需要经常参考前期的图纸。改名和改属性成了我头痛的问题。现在找到组织了。
 樓主| 發表於 2016/4/22 17:42:47 | 顯示全部樓層
看到通知有人回帖,回顧一下,發現還未改善當超過20組態就會報錯的情況。
加入下圖紅框的語句即可:

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有賬號?註冊

x
 樓主| 發表於 2016/4/22 17:56:05 | 顯示全部樓層
發現附件的程式碼加密了,不利大家學習。
三段的程式碼見附件:




本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有賬號?註冊

x
 樓主| 發表於 2016/4/22 19:25:35 | 顯示全部樓層
從【零件批量轉 3D PDF】一帖中:
http://www.solidworks.org.tw/forum.php?mod=viewthread&tid=30792
丹哥努力不懈不斷求進,實在難得。

個人覺得利用這個Excel巨集,略作補充,就可以增加“批量轉 3D PDF”的功能,效益可能更大。
建議做法如下:
先複製整段(將表格內容寫入到檔案)的程式碼到最下端,按下圖修改:

1. 給一個新的程序名稱,例如“Output_3D_PDF”
2. 建議按照自己常用的版本修改程式碼,SW2015版本為例,Application改為Application.23
3. 插入3句程式碼
  1. swApp.Visible = True '讓SW呈現出來
  2. LoadExternalReferences = swApp.GetUserPreferenceIntegerValue(82) '記錄開啟參開檔案的選項
  3. swApp.SetUserPreferenceIntegerValue 82, 2 '設定為不開啟參開檔案
複製代碼
4. 刪除3句用作修改屬性的程式碼(不刪除也不影響的)
5. 把儲存檔案的那一句程式碼改為以下的程式碼
  1.         MyPathName = Cells(1, 3) '讀取儲存格C1作為輸出位置
  2.         If (PathName = "" Or PathName = 0 Or IsEmpty(PathName)) Then MyPathName = PathName '如果C1沒有內容則用源文件的位置
  3.         If Right(MyPathName, 1) <> "" Then MyPathName = MyPathName & "" '檢查字串最後的字符是否“/”
  4.         Select Case swFileTYpe
  5.             Case 1
  6.                 MyFileName = Left(Filename, InStrRev(Filename, ".") - 1) & "_" & ConfigName & "(3D).pdf"
  7.             Case 2
  8.                 MyFileName = Left(Filename, InStrRev(Filename, ".") - 1) & "_" & ConfigName & "(3D-Assembly).pdf"
  9.             Case 3
  10.                 MyFileName = Left(Filename, InStrRev(Filename, ".") - 1) & "_" & ConfigName & "(2D-Drawing).pdf"
  11.         End Select
  12.         Set swExportPDFData = swApp.GetExportFileData(1)
  13.         swExportPDFData.ExportAs3D = True
  14.         SaveOk = swDoc.Extension.SaveAs(MyPathName & MyFileName, 0, 0, swExportPDFData, lErrors, lWarnings)
複製代碼
6. 修改RGB的數值,讓儲存格以不同顏色代表剛完成過不同的功能。如200,255,200是淺綠色。
7. 插入以下程式碼
  1. swApp.SetUserPreferenceIntegerValue 82, LoadExternalReferences '還原已記錄的開啟參開檔案的選項
複製代碼
修改後的程式碼在附件TXT檔案中,但建議按以上資料,先動手修改及除錯,以臨摹的方式學習如何編程。

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有賬號?註冊

x
發表於 2016/4/22 23:40:09 | 顯示全部樓層
Francis 發表於 2016/4/22 19:25
從【零件批量轉 3D PDF】一帖中:
http://www.solidworks.org.tw/forum.php?mod=viewthread&tid=30792
丹哥 ...

謝謝悶哥,週末人在外地,晚些回覆您參加討論
 樓主| 發表於 2016/4/26 13:20:25 | 顯示全部樓層
就算只有SW2010+Excel2000也可以用的。

務請注意文中是說“SW2015版本為例”,而非“SW2015版本的例”。

ps:解說一下:
丹大例,擁有牽動討論的魅力......——即是說這是丹大云云過去例子中的其中一個,可能還有:風趣幽默的談吐、鍥而不捨的個性及敢作敢為的態度。
丹大例,擁有牽動討論的魅力......——即是說除了丹大以外,還有其他人也擁有牽動討論的魅力,可以跟丹大一樣,成為網路神人。
發表於 2016/4/26 16:39:46 | 顯示全部樓層
Francis 發表於 2016/4/26 13:20
就算只有SW2010+Excel2000也可以用的。

務請注意文中是說“SW2015版本為例”,而非“SW2015版本的例”。

悶哥,一開始就GG了…


好像少了宣告…後來加上這一行…就成功了耶!!!
  1.         Dim swExportPDFData     As SldWorks.ExportPdfData
複製代碼

另外請教悶哥,步驟5的第2行代碼…是不是要改成這樣才會儲存在對的資料夾呀…
  1.         If (MyPathName = "" Or MyPathName = 0 Or IsEmpty(MyPathName)) Then MyPathName = PathName '如果C1沒有內容則用源文件的位置
複製代碼



本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有賬號?註冊

x
發表於 2016/4/26 18:05:23 | 顯示全部樓層
貼上操作成功的過程。謝謝悶哥~~^^

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有賬號?註冊

x
 樓主| 發表於 2016/4/26 18:35:28 | 顯示全部樓層
gt.adan 發表於 2016/4/26 16:39
悶哥,一開始就GG了…

終於等到丹兄施展魅力了。

是的,悶人此舉可說是“故意的錯誤”,好讓吃下天降餡餅時帶點難度,看似麻煩實屬有益無害,絕對是“良心食品”。

希望“故意的錯誤”不要變成“錯誤的故意”,謝謝!
發表於 2016/4/27 09:55:35 | 顯示全部樓層
Francis 發表於 2016/4/22 17:56
發現附件的程式碼加密了,不利大家學習。
三段的程式碼見附件:

感谢闷大无私分享
个人在运行时有这种问题,读取属性是读取的数值/表达式内的数据,而不是读取评估的值里的数据,比如材料或者重量之类的属性



经过修改后可以得到评估的值里的数据
修改后代码如下,但是不知正确与否,还望闷大指正


另外:高速版也是这样的,但是我怎么都更改不过来,找到了函数始终不会用
不知是否函数找错(GetCustomPropertyValues)
  1. Dim linkedTo As String
  2. PropValue = swDoc.GetCustomPropertyValues(PropName, swDmCustomInfoText, linkedTo)
複製代碼

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有賬號?註冊

x
 樓主| 發表於 2016/4/27 13:38:28 | 顯示全部樓層
DaveChan 發表於 2016/4/27 09:55
感谢闷大无私分享
个人在运行时有这种问题,读取属性是读取的数值/表达式内的数据,而不是读取评估的值里 ...

谢谢讨论。
应读取『数式』还是『结果』,是值得讨论的。

闷人选择读取『数式』是顾及到还有『將表格內容寫入到檔案』这个功能,如果写入到档案是『结果』,档案的属性就会变成固定值,比如零件设变后质量改变了,零件的质量属性也不会更新了。

闷人还没想出一个两全其美的做法,希望各位可以提出不同见解及想法,集思广益,让问题得以解决。
發表於 2016/4/27 14:11:04 | 顯示全部樓層
Francis 發表於 2016/4/27 13:38
谢谢讨论。
应读取『数式』还是『结果』,是值得讨论的。

谢谢闷大回复

写入属性的话,是不会写到『结果』的吧,在文档里面手动操作,『结果』那一栏都是灰色的,不允许写入任何东西,只允许在『数式』里面写,不知道我的理解对不对
 樓主| 發表於 2016/4/27 14:22:26 | 顯示全部樓層
DaveChan 發表於 2016/4/27 14:11
谢谢闷大回复

写入属性的话,是不会写到『结果』的吧,在文档里面手动操作,『结果』那一栏都是灰色的, ...

与SW的UI无关的。

只要试一下你自己的建议(代码),然后执行『將表格內容寫入到檔案』,就会明白闷人的意思。
 樓主| 發表於 2016/4/27 14:36:45 | 顯示全部樓層
测试如下:
下图是原来的属性


用了45楼的代码,变成这样


本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有賬號?註冊

x
發表於 2016/4/27 15:05:26 | 顯示全部樓層
Francis 發表於 2016/4/27 14:36
测试如下:
下图是原来的属性

现在明白闷大的意思了
我是这样想的:
1.可否在写入属性时,由用户自行删除有表达式的属性,然后再执行『將表格內容寫入到檔案』(这个比较好执行)
2.将重量,材料类似这些属性有表达式的属性,不执行写入属性功能
3.可否由程序判断表达式的关键字眼,例如“PRP”,“___.SLDPRT”之类的,然后过滤掉这些属性的写入
 樓主| 發表於 2016/4/27 15:46:08 | 顯示全部樓層
DaveChan 發表於 2016/4/27 15:05
现在明白闷大的意思了
我是这样想的:
1.可否在写入属性时,由用户自行删除有表达式的属性,然后再执行『 ...

明白你的意思,希望读取到Excel表格后,不会出现一大堆看似没意义的『数式』,可以直接看到『评估值』。

说实话,评估值只不过是一个『结果』,而非真正的数据;绝对有必要采用『数式』,连接出零组件的核心数据。

如果单纯为了“养眼”,把事情搞得越来越复杂,忌讳多罗罗,而带来诸多不便,自动化的观念就荡然无存了。
 樓主| 發表於 2016/4/27 15:59:28 | 顯示全部樓層
话说回来,“养眼”也是一个合理要求,可以尝试Excel的注释,那就可以既看到又不影响了。



本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有賬號?註冊

x
發表於 2016/4/27 16:10:31 | 顯示全部樓層
Francis 發表於 2016/4/27 15:46
明白你的意思,希望读取到Excel表格后,不会出现一大堆看似没意义的『数式』,可以直接看到『评估值』。
...

谢谢闷大的讨论
看来我的这个想法确实是无意义的
 樓主| 發表於 2016/4/27 16:19:37 | 顯示全部樓層
DaveChan 發表於 2016/4/27 16:10
谢谢闷大的讨论
看来我的这个想法确实是无意义的

不用泄气,意念不错,45楼的代码也很好,可读取『结果』,略作修改,就可以把『结果』加入到注释,改后的代码如下
  1.             Dim val As String
  2.             Dim valout As String
  3.             Dim bool As Boolean
  4.             Set swModelDocExt = swDoc.Extension
  5.             Set swCustProp = swModelDocExt.CustomPropertyManager(Cells(RowNumber, 3))
  6.             bool = swCustProp.Get4(PropName, False, val, valout)
  7. '            Cells(RowNumber, ColumnNumber) = valout '此句可删
  8.             Cells(RowNumber, ColumnNumber).ClearComments
  9.             Cells(RowNumber, ColumnNumber).AddComment
  10.             Cells(RowNumber, ColumnNumber).Comment.Visible = False
  11.             Cells(RowNumber, ColumnNumber).Comment.Text Text:="評估值:" & Chr(10) & valout
複製代碼
發表於 2016/4/27 16:44:02 | 顯示全部樓層
Francis 發表於 2016/4/27 16:19
不用泄气,意念不错,45楼的代码也很好,可读取『结果』,略作修改,就可以把『结果』加入到注释,改后的 ...

谢谢闷大
修改后的效果
另外闷大可能又在做"故意的错误"



本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有賬號?註冊

x
 樓主| 發表於 2016/4/27 18:25:50 | 顯示全部樓層
DaveChan 發表於 2016/4/27 09:55
感谢闷大无私分享
个人在运行时有这种问题,读取属性是读取的数值/表达式内的数据,而不是读取评估的值里 ...

没错,就是这个函数,转到高速版继续讨论吧。
http://www.solidworks.org.tw/for ... p;extra=&page=3
發表於 2016/6/4 20:33:45 | 顯示全部樓層
Francis 發表於 2014/10/28 18:36
阿丹曾經要求過整合類型及配置(模型組態),經過一番努力後,找到了笨拙的對應方法。

因為自訂屬性和組態 ...

能不能加入一列,用SW-API读取到“创建时间”?
發表於 2016/6/5 16:20:21 | 顯示全部樓層
whq2016 發表於 2016/6/4 20:33
能不能加入一列,用SW-API读取到“创建时间”?

可以,直接添加屬性名稱再讀取…

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有賬號?註冊

x
發表於 2016/6/5 18:09:47 | 顯示全部樓層
gt.adan 發表於 2016/6/5 16:20
可以,直接添加屬性名稱再讀取…

丹哥,能不能发个添加“创建日期”属性你修改的SWDM-API?还有我的SW是2016,属性-统计中是”创建时间“不是”创建日期“!
我刚开始学VBA,还不会写程序,能不能给我发个SWDM-API?谢谢!!

發表於 2016/6/5 18:29:22 | 顯示全部樓層
whq2016 發表於 2016/6/5 18:09
丹哥,能不能发个添加“创建日期”属性你修改的SW-API?
我没有许可号,能否用SWDM-API读取“创建日期”属 ...

沒記錯 SWDM-API 可以自行讀取的屬性值
與SW-API 是不同的~

所以SWDM-API應該不用添加"創建日期"
發表於 2016/6/5 18:39:25 | 顯示全部樓層
judyyai 發表於 2016/6/5 18:29
沒記錯 SWDM-API 可以自行讀取的屬性值
與SW-API 是不同的~

SWDM-API 可以自行讀取"创建日期“?
發表於 2016/6/5 18:41:39 | 顯示全部樓層
还有我的SW是2016,属性-统计中是”创建时间“不是”创建日期“!
我刚开始学VBA,还不会写程序,能不能给我发个SWDM-API?
發表於 2016/6/5 18:56:11 | 顯示全部樓層
whq2016 發表於 2016/6/5 18:39
SWDM-API 可以自行讀取"创建日期“?

先說明~本篇是 SW-API
底下動圖 是 SWDM-API 是不一樣~看的人別搞錯
我的意思如下(原本零件已有創建日期,或者在無此屬性零件,自行在Excel檔寫入)--檔案來源137#



本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有賬號?註冊

x
發表於 2016/6/5 19:28:41 | 顯示全部樓層
我要显示下图中红色圈中的属性?

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有賬號?註冊

x
發表於 2016/6/5 19:38:52 | 顯示全部樓層
whq2016 發表於 2016/6/5 19:28
我要显示下图中红色圈中的属性?

是這個沒錯~





不過剛又測試創建日期這個欄位,由零件讀取屬性到SWDM-API 的Excel可以

由SWDM-API 的Excel 寫入到零件 ,在Excel顯示就有如下情形

不過到零件屬性,顯示是OK





本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有賬號?註冊

x
發表於 2016/6/5 20:20:42 | 顯示全部樓層
我提供一个文件,用SWDM-API-2016v2显示下图中红色圈中的属性,请问不修改自定义属性等如何显示?最好提供一下修改的SWDM-API-2016,谢谢!

SolidWorks 2016 part

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有賬號?註冊

x
Flyman 該用戶已被刪除
發表於 2016/8/29 08:52:16 | 顯示全部樓層
Francis 發表於 2014/10/28 18:36
阿丹曾經要求過整合類型及配置(模型組態),經過一番努力後,找到了笨拙的對應方法。

因為自訂屬性和組態 ...

悶大哥,很感謝您的心血和分享,Excel 批量修改SW檔案屬性 (無需 SWDM-API 許可號碼) 巨集運行效果明顯!小弟想學習一下巨集運行,無奈悶大哥提供的表格裏的程序是有程序密碼鎖着的,無法看到原始的巨集,小弟直接複製闷大哥後來貼出來的巨集,發現運行提示錯誤,無奈小弟對巨集是零基礎,又無法解決運行問題,在此小弟懇請悶哥能否提供表格的原始程序密碼,讓小弟學習一下其中巨集運行的機制,小弟感激不盡!
發表於 2016/11/17 13:16:19 | 顯示全部樓層
gt.adan 發表於 2016/6/5 16:20
可以,直接添加屬性名稱再讀取…

我按照71楼修改了,打开零件属性能看到日期,但是读取的时候就不显示,不知道为什么



你用的创建时间是日期,我想看具体的创建日期和创建时间、作者和SolidWorks版本!能不能帮我修改一下,发个2016版本的Excel,谢谢!!



本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有賬號?註冊

x
發表於 2016/11/17 14:01:17 | 顯示全部樓層
现在能显示时间了,不过必须每个零件都打开并重新保存才可以。
现在的问题是:
1、必须修改“创建时间”属性后,再打开每个文件保存(我想直接点击“写属性值”就保存);2、必须用鼠标放到该列才显示日期(我想直接在表格中显示日期);3、没法显示创建的时间(hh:mm:ss格式)
请指导我该如何解决?
發表於 2016/11/18 08:56:33 | 顯示全部樓層

Judyyai,你的问题解决了吗?
發表於 2016/11/18 09:04:59 | 顯示全部樓層
Francis 發表於 2014/10/28 18:36
阿丹曾經要求過整合類型及配置(模型組態),經過一番努力後,找到了笨拙的對應方法。

因為自訂屬性和組態 ...

我想学习SW-API,批量查看SW档案属性
發表於 2016/12/1 13:56:56 | 顯示全部樓層
知道VBA可用,但無奈對於編程一竅不通阿,遇到大量修改的零件時真是頭都大了,終於要來論壇上找找有什麼方法解決,才發現大大這個版塊,有這麼個工具,感謝分享!!希望越來越好!!!
發表於 2017/3/28 17:36:57 | 顯示全部樓層
Francis 發表於 2014/10/28 18:36
阿丹曾經要求過整合類型及配置(模型組態),經過一番努力後,找到了笨拙的對應方法。

因為自訂屬性和組態 ...

很不错的工具,可以不用在表格事先设置好属性名称,直接把属性名称和对应的属性一起读出来吗?
發表於 2017/6/25 00:32:01 | 顯示全部樓層
還是轉到這篇來吧。
由於SWDM API的許可證每個SW新版本都必須重置(由於非正版用戶無法取得許可證號,所以相對來講使用上會不太方便),故想用悶大附件的代碼(SWDM API)製作成SW API版本的批量修改屬性。
無奈本人無編程基礎及認知,不知如何下手修改現成代碼(SWDM API)成SW API版本。還望各位幫忙修改下或告知該如何下手修改。謝謝。
Ps:以下是想要的功能截圖:

悶大的SWDM API代碼附件:

個人根據悶大分享的代碼及網絡上各位大大分享的代碼拼湊出的半成品:


本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有賬號?註冊

x
發表於 2017/6/27 21:33:52 | 顯示全部樓層
benson2013 發表於 2017/6/25 00:32
還是轉到這篇來吧。
由於SWDM API的許可證每個SW新版本都必須重置(由於非正版用戶無法取得許可證 ...

本来不是每个新版本都重置許可證號的,自从2014年有人千方百计诈取通用号码后四处炫耀,迫使原厂不得不从2015本版开始,每个新版本都重置許可證號。
發表於 2017/6/27 21:51:19 | 顯示全部樓層
Dassault 發表於 2017/6/27 21:33
本来不是每个新版本都重置許可證號的,自从2014年有人千方百计诈取通用号码后四处炫耀,迫使原厂不得不从 ...

謝謝Dassault大告知SWDM許可證號要重置的來龍去脈。以下附件為獲取屬性名稱代碼(自己嘗試增刪減後的結果):

由於本人缺乏編程基礎及常識,其修改結果就是:失敗。
暫時不知道該如何下手增刪減啦。










本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有賬號?註冊

x
 樓主| 發表於 2017/6/28 15:34:51 | 顯示全部樓層
benson2013 發表於 2017/6/27 21:51
謝謝Dassault大告知SWDM許可證號要重置的來龍去脈。以下附件為獲取屬性名稱代碼(自己嘗試增刪減後的結果 ...

在本主題的13樓,悶人說過會著手修改,也修改好了;但發現存在致命弱點,就是速度太慢。
由於SW-API與SWDM-API的先天特性不同,不但SW-API開啟和保存的速度是SWDM-API近千倍,還有可能觸發模型重新運算,所需的時間不用多說。
在實務上,一個只有百多個零件的例子,操作起來已經難以忍受,更遑論大型裝配了。

不過悶人深信事情總可以解決的,希望有朋友可以想出對應辦法。

發表於 2017/6/28 16:03:09 | 顯示全部樓層
Francis 發表於 2017/6/28 15:34
在本主題的13樓,悶人說過會著手修改,也修改好了;但發現存在致命弱點,就是速度太慢。
由於SW-API與SWD ...

確實如悶大所言,SW-API與SWDM-API兩者的速度差異近千倍。但於個人而言,SW-API與手動一個個操作相比的話,SW-API的速度已經很快啦……
當然還是得謝謝悶大分享的SW-API與SWDM-API代碼,畢竟在工作上助益多多(提高了效率)。


 樓主| 發表於 2017/6/29 14:25:39 | 顯示全部樓層
悶人一向鼓勵助人自助,授魚不如授漁。
開放源碼就是可讓各位擴展用途,豈料卻換來 B格 的罵名。
 樓主| 發表於 2017/6/29 17:16:42 | 顯示全部樓層
gt.adan 發表於 2016/4/25 09:45
你們這些鬼!悶哥說沒有人討論,還真的…沒有人!?
這下我被悶哥打臉打腫啦!
手頭沒有2015,回 ...

難道悶人的中文是那麼不濟?一再讓丹哥誤會了。

“換來XX的罵名”,悶人的意思是“給某人謾罵成XX”,而非“給XX謾罵”。
估計悶人是加分最鬆手、提供教程設限最少,學習門檻最低 的笨蛋,怎麼經常被誤會曲高和寡、故作神秘呢?


加上丹哥以“點評”查問,悶人只能無奈地以這種方式回答,萬分抱歉。

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有賬號?註冊

x
發表於 2017/6/29 17:54:28 | 顯示全部樓層
Francis 發表於 2017/6/29 17:16
難道悶人的中文是那麼不濟?一再讓丹哥誤會了。

“換來XX的罵名”,悶人的意思是“給某人謾罵成XX”,而 ...

非也!非也!是我自己沒看清楚,以為悶哥給人謾罵了~~

謝謝悶哥回覆!
發表於 2017/6/30 22:22:37 | 顯示全部樓層
由於ISOJPGSAVE(批量輸出零件圖片)的代碼無法兼顧多組態零件,需要修正。經過悶大及丹大指導後,現修正如下:
1.圖片名稱格式修正為“零件檔案名稱+配置名稱”。
2.兼顧到多組態零件。
具體代碼如下:
  1. Sub ISOJPGSAVE()
  2. Dim swApp As Object
  3. Dim PathNames() As String
  4. Dim FileNames() As String
  5. HeaderRow = 2
  6. RowNumber = HeaderRow + 1
  7. Fcount = 0
  8. Set swApp = CreateObject("SldWorks.Application") '啟動SW
  9. Set Part = swApp.ActiveDoc
  10. PathName = Cells(RowNumber, 1)
  11. Filename = Cells(RowNumber, 2)
  12. ConfigName = Cells(RowNumber, 3)
  13. While Not (PathName = "" Or PathName = 0 Or IsEmpty(PathName)) '直到讀完路徑欄
  14.     Set Part = swApp.OpenDoc(PathName & Filename, 1) '開啟零件
  15.     boolstatus = Part.ShowConfiguration(ConfigName) '激活當前組態
  16. Part.ShowNamedView2 "*Isometrisch", 7     '等軸測顯示
  17. Part.ViewZoomtofit2                       '視角最大化
  18. sFilename = Left(Filename, Len(Filename) - 6) + ConfigName + ".jpg"
  19. longstatus = Part.SaveAs3(PathName & sFilename, 0, 0) '存為JPG文件
  20. Cells(RowNumber, 4) = sFilename '填寫JPG檔案名稱
  21. Part.Save '保存
  22. Cells(RowNumber, 2).Interior.Color = RGB(255, 200, 200) '保存單元格變色
  23. swApp.CloseDoc (PartFileName) '關閉零件
  24.     Fcount = Fcount + 1
  25.     RowNumber = RowNumber + 1 '下一列
  26.     PathName = Cells(RowNumber, 1)
  27.     Filename = Cells(RowNumber, 2)
  28.     ConfigName = Cells(RowNumber, 3)
  29. Wend '回到>直到讀完路徑欄
  30. If Not swApp.Visible Then
  31.     swApp.ExitApp
  32. End If
  33. MsgBox "已完成" & Fcount & "個JPG文件"
  34. End Sub
複製代碼
試用結果如下:

PS:另外的就是獲取屬性名稱及刪除屬性的代碼需修正啦。

只能一步步慢慢來啦。


本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有賬號?註冊

x
 樓主| 發表於 2017/6/30 22:26:31 | 顯示全部樓層
benson2013 發表於 2017/6/28 16:03
確實如悶大所言,SW-API與SWDM-API兩者的速度差異近千倍。但於個人而言,SW-API與手動一個個操作相比的話 ...

http://www.solidworks.org.tw/for ... hread&tid=32792
悶人看過以上鏈接(浣熊大的提問),才發現本帖37樓的代碼漏了激活每一個配置,幸得丹大已經在以上鏈接作出補充,謝謝丹大。

經過一天的思考,除了速度的關鍵要素外,還在思考有什麼功能應該加上的。

初步的構想,就是瀏覽檔案時把檔案載入到SW中(開啟),然後做任何動作,包括獲取屬性名稱、讀取屬性 、刪除屬性、 修改屬性 和 輸出檔案等等,都維持檔案在開啟中,到最後加兩多個按鈕,一個是退出並保存,另一個是退出不保存。

這樣的話,所需時間都是集中於開啟和保存,估計其餘的操作速度將與swdm-api不相伯仲。
發表於 2017/6/30 22:52:10 | 顯示全部樓層

俺笨熊非常贊同悶大的構想(集中開啟和保存),否則Excel裡每個按鈕指令都會再執行一遍開始及保存。

俺要做這個Excel的起因是:
項目期常常需要出報價單(且時間緊迫),如果手動製作的話,費時費力;
又因為報價單常常需要以下幾個關鍵參數:零件名稱,圖片,材質,重量,最大外形尺寸,數量等。
所以想修改批量修改屬性達到需求。



 樓主| 發表於 2017/7/1 01:00:42 | 顯示全部樓層
benson2013 發表於 2017/6/30 22:52
俺笨熊非常贊同悶大的構想(集中開啟和保存),否則Excel裡每個按鈕指令都會再執行一遍開始及保存。

俺要 ...

謝謝浣熊大說出意圖(當然越早說出動機就越好),原來用來輔助報價,而不是單純用來管理屬性,這樣問題就出來了,就是讀取到的屬性值時,應讀取『數式』還是『結果』(參見本帖45-56樓)。

以管理屬性的角度而言,讀取『數式』是必然的,但用來輔助報價,那就必須讀取『結果』了,如何兼容訴求?

初步分別有兩個構思都可解決的:
1. 編寫一個能把註釋與值對調的宏,讀取屬性後,複製到報價單對調一下來解決。
2. 讀取屬性時,值寫到cell,數式寫到註釋(剛好與現行的相反);另外數式與值相同就不寫到註釋,以減少那些刺眼的紅色小三角形。
發表於 2017/7/1 08:51:31 | 顯示全部樓層
Francis 發表於 2017/7/1 01:00
謝謝浣熊大說出意圖(當然越早說出動機就越好),原來用來輔助報價,而不是單純用來管理屬性,這樣問題就 ...

非常感謝悶大,這麼晚還給笨熊出解決方案。辛苦啦……
悶大的兩個方案都非常贊,相對來講,個人更傾向於方案1(還能兼容管理屬性的功能).
因為Excel輸出的內容用於報價時,會再行複製相關內容到新的Excel進行適當的編輯,所以對調宏相對來講可能會更符合其意圖。

另:俺笨熊最初的構想是出兩個Excel(一個Excel用於輸出數值,一個Excel用於輸出表達式),或者Excel內做兩個按鈕指令(一個用於輸出數值,一個用於輸出表達式),完全屬於土法煉鋼。還是悶大的方案貼合實際需求。




 樓主| 發表於 2017/7/1 10:52:53 | 顯示全部樓層
benson2013 發表於 2017/6/30 22:22
由於ISOJPGSAVE(批量輸出零件圖片)的代碼無法兼顧多組態零件,需要修正。經過悶大及丹大指導後,現修正如 ...

有勞測試以下“獲取屬性名稱”的代碼:
  1. Sub GetPropNames()
  2. Set swApp = CreateObject("SldWorks.Application")
  3. Dim PropList() As String '屬性名稱陣列
  4. Dim FilePathName As String
  5. Dim i As Integer
  6. HeaderRow = 2 '設定表頭列(常數)
  7. RowNumber = HeaderRow + 1 '設定內容開始列(變數)
  8. PathName = Cells(RowNumber, 1) '讀取第一個路徑的值
  9. ReDim PropList(0)
  10. PropList(0) = "" '避免比對名稱時出錯
  11. PropLeft = 4 '屬性名稱左端位置(常數)
  12. PropRight = PropLeft '屬性名稱右端位置(變數)
  13. PropName = Cells(HeaderRow, PropRight)
  14. While Not (PropName = "" Or PropName = 0 Or IsEmpty(PropName)) '把表中的現有屬性名稱記錄到屬性名稱陣列
  15.     ReDim Preserve PropList(PropRight - 3)
  16.     PropList(PropRight - 3) = PropName
  17.     PropRight = PropRight + 1 '下一欄
  18.     PropName = Cells(HeaderRow, PropRight)
  19. Wend
  20. While Not (PathName = "" Or PathName = 0 Or IsEmpty(PathName)) '直到讀完路徑欄
  21.     Filename = Cells(RowNumber, 2)
  22.     FileExtname = UCase(Right(Cells(RowNumber, 2), 6))
  23.     If "SLDPRT" = FileExtname Then swFileTYpe = 1
  24.     If "SLDASM" = FileExtname Then swFileTYpe = 2
  25.     If "SLDDRW" = FileExtname Then swFileTYpe = 3
  26.     If "SLDLFP" = FileExtname Then swFileTYpe = 1
  27.     Set swDoc = swApp.OpenDoc(PathName & Filename, swFileTYpe) '開啟檔案
  28.     If Not swDoc Is Nothing Then '排除無效檔案
  29.         swConfigName = Cells(RowNumber, 3)
  30.         vCustPropNameArr = swDoc.GetCustomInfoNames2(swConfigName)
  31.         If TypeName(vCustPropNameArr) = "String()" Then
  32.              For Each vCustPropName In vCustPropNameArr
  33.                  inlist = False
  34.                  For Each PropItem In PropList '比對名稱是否已存在
  35.                     If vCustPropName = PropItem Then inlist = True
  36.                  Next
  37.                  If Not inlist Then '不存在即加入到屬性名稱陣列
  38.                     ReDim Preserve PropList(UBound(PropList) + 1)
  39.                     PropList(UBound(PropList)) = vCustPropName
  40.                  End If
  41.             Next
  42.         End If
  43.         Cells(RowNumber, 1).Interior.Color = RGB(200, 200, 255)
  44.         swApp.CloseDoc PathName & Filename '關閉檔案
  45.     End If    '排除無效檔案<完>
  46.     RowNumber = RowNumber + 1 '下一列
  47.     PathName = Cells(RowNumber, 1)
  48. Wend '回到>直到讀完路徑欄
  49. PropRight = PropLeft '屬性名稱右端位置(變數)
  50. For i = 1 To UBound(PropList)
  51.     Cells(HeaderRow, PropRight) = PropList(i)
  52.     Cells(HeaderRow, PropRight).Font.Bold = True
  53.     PropRight = PropRight + 1
  54. Next
  55. End Sub
複製代碼

發表於 2017/7/1 12:14:12 | 顯示全部樓層
Francis 發表於 2017/7/1 10:52
有勞測試以下“獲取屬性名稱”的代碼:

謝謝悶大的代碼,試用效果非常完美(可兼顧自定義屬性與配置特定屬性)。如下圖:


PS:正在嘗試修改“刪除屬性”的代碼,一步步來,看是否可以成功。……

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有賬號?註冊

x
發表於 2017/7/1 15:20:24 | 顯示全部樓層
“刪除屬性”的代碼修改,俺笨熊暫時還搞不定(俺太缺乏編程常識啦,得自行多補補課)。希望各位多多指點下啊。
發表於 2017/7/1 20:13:01 | 顯示全部樓層

再次感謝悶大的指點。
首先打開總裝(載入到內存,不退出),然後獲取名稱,讀取,寫入屬性(取消其中關閉檔案代碼)等,速度明顯快很多;






發表於 2017/7/1 20:42:23 | 顯示全部樓層
接續:但是批量圖片輸出保存的全部都是總裝的圖片,如下圖:

如果關閉總裝後,再執行“等軸側圖片”的話,一切正常。
俺笨熊不知道該如何修正這個異常,還望各位指導下啊。謝謝!

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有賬號?註冊

x
發表於 2017/7/2 10:57:37 | 顯示全部樓層
附上俺笨熊根據各位大大的代碼拼湊出的SW-API的批量修改屬性。

其中有以下仍未解決:
1.“刪除屬性”的按鈕不可用。
2.在SW打開總裝的前提下,“等軸側圖片”會出現異常。
3.關於屬性數值與表達式的對調宏,俺笨熊暫時也搞不定。
雖說俺笨熊的附件問題多多,但一定程度上還是可以輔助工作的。在此感謝各位的指導。
期待改進!


本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有賬號?註冊

x
 樓主| 發表於 2017/7/2 11:26:52 | 顯示全部樓層
benson2013 發表於 2017/7/1 20:42
接續:但是批量圖片輸出保存的全部都是總裝的圖片,如下圖:

如果關閉總裝後,再執行“等軸側圖片”的話, ...

估計:
零件雖然已經載入記憶體,但還沒呈現(即是說還沒打開,記憶體中不存在零件的圖形),導致輸出錯誤。

可用visible函數讓零件呈現出來才輸出圖片。
 樓主| 發表於 2017/7/2 18:33:14 | 顯示全部樓層
benson2013 發表於 2017/7/2 10:57
附上俺笨熊根據各位大大的代碼拼湊出的SW-API的批量修改屬性。

其中有以下仍未解決:

試下以下刪除屬性的代碼
  1. Const HeaderRow = 2 '表頭列
  2. Const PropLeft = 4 '屬性名稱左端欄位

  3. Sub DeleteProps()
  4. yn = MsgBox("Once Deleted, those cannot be restored. Continue?", vbYesNo)
  5. If yn <> 6 Then Exit Sub
  6. Set swApp = CreateObject("SldWorks.Application")
  7. RowNumber = HeaderRow + 1
  8. PathName = Cells(RowNumber, 1) & "" '讀取第一個路徑的值
  9. While Not (PathName = "")  '直到讀完路徑欄
  10.     FileName = Cells(RowNumber, 2)
  11.     FileExtname = UCase(Right(Cells(RowNumber, 2), 6))
  12.     If "SLDPRT" = FileExtname Then swFileTYpe = 1
  13.     If "SLDASM" = FileExtname Then swFileTYpe = 2
  14.     If "SLDDRW" = FileExtname Then swFileTYpe = 3
  15.     If "SLDLFP" = FileExtname Then swFileTYpe = 1
  16.     If Not (swFileTYpe = 3 And FileName = Cells(RowNumber - 1, 2)) Then
  17.         Set swDoc = swApp.OpenDoc(PathName & FileName, swFileTYpe) '開啟檔案
  18.         ColumnNumber = PropLeft
  19.         PropName = Cells(HeaderRow, ColumnNumber) & ""
  20.         While Not (PropName = "")  '直到讀完表頭
  21.             If Not (Left(PropName, 1) = "$" And Right(PropName, 1) = "$") Then
  22.                 swDoc.DeleteCustomInfo2 Cells(RowNumber, 3), PropName
  23.             End If
  24.             ColumnNumber = ColumnNumber + 1 '下一欄
  25.             PropName = Cells(HeaderRow, ColumnNumber)
  26.         Wend '回到>直到讀完表頭
  27.         Cells(RowNumber, 1).Interior.Color = RGB(255, 50, 50)
  28.     Else
  29.         Cells(RowNumber, 1).Interior.Pattern = xlNoneColor
  30.     End If
  31.     RowNumber = RowNumber + 1 '下一列
  32.     PathName = Cells(RowNumber, 1) & ""
  33. Wend '回到>直到讀完路徑欄
  34. End Sub
複製代碼

發表於 2017/7/3 19:10:37 | 顯示全部樓層
Francis 發表於 2017/7/2 18:33
試下以下刪除屬性的代碼

謝謝悶大分享代碼。此代碼試用正常(不過俺笨熊有在後面加了一句“保存零件”的代碼)。




發表於 2017/7/3 21:43:03 | 顯示全部樓層
Francis 發表於 2017/7/2 11:26
估計:
零件雖然已經載入記憶體,但還沒呈現(即是說還沒打開,記憶體中不存在零件的圖形),導致輸出錯 ...

在SW API Help中找到visible函數,說明如下:

可俺笨熊還是不知道該如何寫這句代碼(俺笨熊基礎太淒慘啦),



本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有賬號?註冊

x
 樓主| 發表於 2017/7/4 00:53:12 | 顯示全部樓層
benson2013 發表於 2017/7/3 21:43
在SW API Help中找到visible函數,說明如下:

可俺笨熊還是不知道該如何寫這句代碼(俺笨熊基礎太淒慘啦 ...

這是實體的函數啊。

建議這樣改:

在此句以下
Set Part = swApp.OpenDoc(PathName & Filename, 1) '開啟零件

加多這2句
Dim swerr As Long
Set Part = swApp.ActivateDoc2(PathName & FileName, True, swerr)
 樓主| 發表於 2017/7/8 14:50:27 | 顯示全部樓層
benson2013 發表於 2017/7/1 12:14
謝謝悶大的代碼,試用效果非常完美(可兼顧自定義屬性與配置特定屬性)。如下圖:

跟隨浣熊大的腳步, 悶人也修訂了一下.

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有賬號?註冊

x
 樓主| 發表於 2017/7/8 15:26:24 | 顯示全部樓層
預覽圖片會自動跟隨欄位寬度做調整


本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有賬號?註冊

x
 樓主| 發表於 2017/7/8 15:39:01 | 顯示全部樓層
增加了5大功能:
1. 刪除零件和組合件冗餘模型組態
2. 批次修改模型組態名稱
3. 批量修改工程圖圖紙名稱
4. 匯入預覽圖片(無需中繼檔案)
5. 批次輸出多種格式
發表於 2017/7/8 19:31:19 | 顯示全部樓層
Francis 發表於 2017/7/8 14:50
跟隨浣熊大的腳步, 悶人也修訂了一下.

悶大的程式碼功能非常完美。製作的圖表真漂亮,賞心悅目啊。




發表於 2017/7/8 20:38:58 | 顯示全部樓層
Francis 發表於 2017/7/8 15:39
增加了5大功能:
1. 刪除零件和組合件冗餘模型組態
2. 批次修改模型組態名稱

非常讚的新增功能。可否請悶大分享下4與5項新增功能的代碼(俺笨熊心癢癢,自己卻搞不定。只能做伸手黨啦,),謝謝!
4. 匯入預覽圖片(無需中繼檔案)
5. 批次輸出多種格式

 樓主| 發表於 2017/7/9 00:52:11 | 顯示全部樓層
benson2013 發表於 2017/7/8 20:38
非常讚的新增功能。可否請悶大分享下4與5項新增功能的代碼(俺笨熊心癢癢,自己卻搞不定。只能做伸手黨啦 ...

還在 Debug 當中.

而 4. 匯入預覽圖片(無需中繼檔案), 只不過用了 ActiveSheet.Shapes.AddPicture 代替 ActiveSheet.Pictures.Insert 而已.
 樓主| 發表於 2017/7/9 00:53:44 | 顯示全部樓層
補充操作過程的影片(1920*1080):
https://www.youtube.com/watch?v=ikYZDylxcGg
 樓主| 發表於 2017/7/9 09:20:49 | 顯示全部樓層
看來這個工具除了浣熊大有興趣以外, 其他人士都嗤之以鼻.
發表於 2017/7/9 09:31:12 | 顯示全部樓層
Francis 發表於 2017/7/9 09:20
看來這個工具除了浣熊大有興趣以外, 其他人士都嗤之以鼻.

悶大您言重了 ......
因為完全不懂
所以無法參予討論 ..... >"<

發表於 2017/7/9 10:19:21 | 顯示全部樓層
Francis 發表於 2017/7/9 00:53
補充操作過程的影片(1920*1080):
https://www.youtube.com/watch?v=ikYZDylxcGg

影片播放到第8秒時,已經發出讚嘆,只需要選總組合,其他零件全部自己呼叫了!

這功能是只呼叫總組合所在資料夾的零件,而不包含零件庫的對嗎?
發表於 2017/7/9 10:20:08 | 顯示全部樓層
benson2013 發表於 2017/7/8 20:38
非常讚的新增功能。可否請悶大分享下4與5項新增功能的代碼(俺笨熊心癢癢,自己卻搞不定。只能做伸手黨啦 ...

浣熊大好厲害,能跟到這地步。
 樓主| 發表於 2017/7/9 10:30:12 | 顯示全部樓層
MINAIK 發表於 2017/7/9 10:19
影片播放到第8秒時,已經發出讚嘆,只需要選總組合,其他零件全部自己呼叫了!

這功能是只呼叫 ...

謝謝 M大 跟進討論.

這點有考慮過的, 在儲存格B1中的OpenOption選項就是為此而設.
1=所有路徑(包括共用庫), 2=總組合所在路徑, 3=總組合所在及往下的路徑

但感覺還依然未能滿足各種所需, 難以兼容不同形式的圖庫.
 樓主| 發表於 2017/7/9 10:53:35 | 顯示全部樓層
tiger763140 發表於 2017/7/9 09:31
悶大您言重了 ......
因為完全不懂
所以無法參予討論 ..... >"<

tiger大謙虛了.

悶人一向自以為在討論時能做到深入淺出, 可帶領學習者無障礙地進入問題的核心地帶, 明瞭箇中機制.

但往往事與願違, 得到的回應不是在埋怨門檻太高, 就是在問題表面高速滑行.

雖然現像如此, 悶人卻深信還有很多默默無聲的認同者, 但願他們可以發一下聲, 讓悶人不致太悶.

發表於 2017/7/9 10:55:04 | 顯示全部樓層
Francis 發表於 2017/7/9 10:30
謝謝 M大 跟進討論.

這點有考慮過的, 在儲存格B1中的OpenOption選項就是為此而設.



請問是修改紅框數字即可嗎?

看來還有更多選項,注釋裡應該有說明吧。

針對開啟文件的選項,有這三種模式應該能滿足大部分需求吧,我孤陋寡聞,沒見過其他檔案管理辦法。

對於API一竅不通,目前只能討論一些功能的問題,望悶大見諒。

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有賬號?註冊

x
發表於 2017/7/9 11:04:16 | 顯示全部樓層
Francis 發表於 2017/7/9 10:30
謝謝 M大 跟進討論.

這點有考慮過的, 在儲存格B1中的OpenOption選項就是為此而設.

悶大真貼心,3個選項照顧了不同的檔案管理方式的用家。



 樓主| 發表於 2017/7/9 11:20:59 | 顯示全部樓層
MINAIK 發表於 2017/7/9 10:55
請問是修改紅框數字即可嗎?

看來還有更多選項,注釋裡應該有說明吧。

1. 對.
2. 對.
3. 感覺 MINAIK大 是位明日新星, 自覺孤陋寡聞絕對是一個好開端.
4. 對議題討論深入與否, 並非通曉其工具就能代表一切, 好比中文字, 就算全懂了洋洋數萬字, 也不代表能寫出文章, 相反只要靈活運用僅會的數百字, 也足以明確地表達自己心中所想.
很多時候, 關鍵意見並不是來自專家、學者、顧問, 而是來自一些不起眼的角色, 甚至乎是小孩.
發表於 2017/7/9 11:23:25 | 顯示全部樓層
Francis 發表於 2017/7/1 01:00
謝謝浣熊大說出意圖(當然越早說出動機就越好),原來用來輔助報價,而不是單純用來管理屬性,這樣問題就 ...

笨熊有個想法,不知是否可行:
寫入屬性,刪除屬性可否局部選取後(例如選取屬性名稱的列),只執行修改選取的那部分屬性。這樣的話,屬性直接輸出數值即可,似乎可以避免用到註解。
PS:當然為了方便選取,採用表達式的屬性名稱可能需要將其自動排列在最前面或者最後面才行,這樣才方便篩選及選取。

發表於 2017/7/10 08:48:06 | 顯示全部樓層
打開總裝,自動帶入所有的零組件,光是看到這兒已經止不住口水了!!
更不用說新增的功能:自動排列圖片、刪除多餘的組態、修改組態名稱……

期待接續的討論!
發表於 2017/7/12 15:57:20 | 顯示全部樓層
Francis 發表於 2017/7/10 00:04
這辦法DaveChan已經在46樓提議過了, 悶人也在47樓回答了.

闷大的程序功能强大,界面美观啊,对于新增功能提个建议,能不能把批量更改文件名称的功能也合并进去,并支持虚拟零件的更名(judyyai 姐提供的表格不能支持虚拟零件更名,更名后虚拟零件会丢失外部参考,也得到了她的确认),对于二次开发实在是小白鼠一只,一直伸手于闷大,想参与而力不从心,还望见谅,感谢闷大的无私奉献!
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

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

GMT+8, 2024/3/29 04:44 , Processed in 0.174447 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

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