iCAx开思网

标题: 宏例子: 打開指定目錄逐一處理所有零件的瑣事 [打印本页]

作者: Francis    时间: 2014-9-23 13:17
标题: 宏例子: 打開指定目錄逐一處理所有零件的瑣事
本帖最后由 Francis 于 2014-9-24 23:10 编辑

僅供參考:
  1. Sub Test()
  2. Set swApp = Application.SldWorks
  3. PartPath = "D:\Project" '設定目錄
  4. PartFileName = Dir(PartPath & "*.sldprt") '搜尋首個零件檔案名稱
  5. Do Until PartFileName = "" '直至搜尋到空值
  6.     Set Part = swApp.OpenDoc(PartPath & PartFileName, 1) '開啟零件
  7.     '加入所需語句
  8.     '.
  9.     '.
  10.     '.
  11.     '.
  12.     Part.Save '保存
  13.     swApp.CloseDoc (PartFileName) '關閉零件
  14.     PartFileName = Dir '搜尋下一個零件檔案名稱
  15. Loop '循環搜尋
  16. End Sub
复制代码

作者: Francis    时间: 2014-9-23 13:33
例如配合以下鏈接2樓的代碼, 就可以批量修改同一目錄中所有工程圖內所有圖紙的名稱了.
https://www.icax.org/forum.php?mod=viewthread&tid=925975
作者: gt.adan    时间: 2014-9-23 15:09
本帖最后由 gt.adan 于 2014-9-23 15:10 编辑

【練習】用悶大的代碼加入鈑金的展開及抑制,達成「批量重整」模型
  1. Dim swApp As Object
  2. Dim Part As Object
  3. Dim boolstatus As Boolean
  4. Dim longstatus As Long, longwarnings As Long
  5. Sub Test()
  6. Set swApp = Application.SldWorks
  7. PartPath = "C:\資料夾路徑" '設定目錄
  8. PartFileName = Dir(PartPath & "*.sldprt") '搜尋首個零件檔案名稱
  9. Do Until PartFileName = "" '直至搜尋到空值
  10.     Set Part = swApp.OpenDoc(PartPath & PartFileName, 1) '開啟零件
  11.     boolstatus = Part.Extension.SelectByID2("Flat-Pattern1", "BODYFEATURE", 0, 0, 0, False, 0, Nothing, 0)
  12.     Part.ClearSelection2 True
  13.     longstatus = Part.SetBendState(2)
  14.     boolstatus = Part.EditRebuild3()
  15.     boolstatus = Part.Extension.SelectByID2("Flat-Pattern1", "BODYFEATURE", 0, 0, 0, False, 0, Nothing, 0)
  16.     Part.ClearSelection2 True
  17.     longstatus = Part.SetBendState(3)
  18.     boolstatus = Part.EditRebuild3()
  19.     Part.Save '保存
  20.     swApp.CloseDoc (PartFileName) '關閉零件
  21.     PartFileName = Dir '搜尋下一個零件檔案名稱
  22. Loop '循環搜尋
  23. End Sub
复制代码

作者: gg555gg555    时间: 2014-9-24 08:09
好贴不顶不行,谢谢版大分享
作者: Francis    时间: 2014-9-25 01:18
就算用了 InputBox, 依然只能處理一個目錄.
若要處理多個目錄, 就要動用"用戶窗體"的功能.

1. 插入>用戶窗體, 出現以下版面
[attach]1207531[/attach]

2. 加入TextBox 及 CommandButton
[attach]1207530[/attach]

3. TextBox1 的屬性 MultiLine 設定為 True
[attach]1207529[/attach]

4. 雙擊 CommandButton, 貼上以下代碼:
  1. Private Sub CommandButton1_Click()
  2. Set swApp = Application.SldWorks
  3. LoadExternalReferences = swApp.GetUserPreferenceIntegerValue(82)
  4. swApp.SetUserPreferenceIntegerValue 82, 2
  5. PartPaths = Split(TextBox1, Chr(13) & Chr(10))
  6. For i = 0 To UBound(PartPaths)
  7.     PartFileName = Dir(PartPaths(i) & "*.sldprt") '搜尋首個零件檔案名稱
  8.     Do Until PartFileName = "" '直至搜尋到空值
  9.         Set Part = swApp.OpenDoc(PartPaths(i) & PartFileName, 1) '開啟零件
  10.         '加入所需語句
  11.         '.
  12.         '.
  13.         '.
  14.         '.
  15.         Part.Save '保存
  16.         swApp.CloseDoc (PartFileName) '關閉零件
  17.         PartFileName = Dir '搜尋下一個零件檔案名稱
  18.     Loop '循環搜尋
  19. Next
  20. swApp.SetUserPreferenceIntegerValue 82, LoadExternalReferences
  21. Unload UserForm1
  22. End Sub
复制代码

作者: Francis    时间: 2014-9-25 01:33
本帖最后由 Francis 于 2014-9-25 09:18 编辑

下一課: 彈出窗口點選目錄
[attach]1207533[/attach]

作者: wxg263    时间: 2014-9-27 11:14
  这个已经进入VB 教程了。。
作者: Francis    时间: 2014-9-27 23:00
不知有沒有成功例子
作者: gt.adan    时间: 2014-11-3 15:12
Francis 发表于 2014-9-27 23:00
不知有沒有成功例子

回覆悶哥…不成功…><[attach]1209582[/attach]

作者: Francis    时间: 2014-11-3 15:53
gt.adan 发表于 2014-11-3 15:12
回覆悶哥…不成功…><

謝謝丹弟測試。
可否上傳swp檔案,看看問題在哪。



作者: gt.adan    时间: 2014-11-3 17:37
Francis 发表于 2014-11-3 15:53
謝謝丹弟測試。
可否上傳swp檔案,看看問題在哪。

應該是阿丹操做過程有誤…請悶哥幫忙查看,謝謝您。
測試版本:2012

[attach]1209584[/attach]


作者: Francis    时间: 2014-11-3 18:34
gt.adan 发表于 2014-11-3 17:37
應該是阿丹操做過程有誤…請悶哥幫忙查看,謝謝您。
測試版本:2012

看過了,正確無誤,也試過正常運行,輸入幾個資料夾名稱後,按一下按鈕,是可以把幾個資料夾內的零件檔案保存一次的。

由於這是簡單的編程,存在限制,需要諸多妥協配合。
其中一個關鍵,在於輸入每個資料夾名稱後(就算只有一個資料夾名稱),也要必須按一下Ctrl+Enter來分隔行數。

其實這個宏例子是一塊『踏腳石』,只是為了『利用Excel作為用戶界面』鋪路,所以這個宏已經是過去式了。


作者: wutong490    时间: 2014-11-13 21:38
gt.adan 发表于 2014-11-3 17:37
應該是阿丹操做過程有誤…請悶哥幫忙查看,謝謝您。
測試版本:2012

好像阿丹少了一些东西
[attach]1210418[/attach]

添加代码就可以正确显示

作者: gt.adan    时间: 2014-11-13 22:30
wutong490 发表于 2014-11-13 21:38
好像阿丹少了一些东西

謝謝梧桐,期待悶哥繼續開課~~^^

作者: Francis    时间: 2014-11-13 23:36
gt.adan 发表于 2014-11-13 22:30
謝謝梧桐,期待悶哥繼續開課~~^^

{:soso_e127:}12樓有回复,這個主題是為了『外部批次修改屬性』{:soso_e113:}或『利用Excel作為用戶界面』鋪路。{:soso_e147:}

延續的教程在此:{:soso_e148:}
https://www.solidworks.org.tw/for ... =210870&fromuid=151

另一個尚未完成:{:soso_e148:}
https://www.solidworks.org.tw/for ... =210426&fromuid=151


作者: gt.adan    时间: 2014-11-14 11:36
Francis 发表于 2014-11-13 23:36
12樓有回复,這個主題是為了『外部批次修改屬性』或『利用Excel作為用戶界面 ...

哈!原來如此!阿丹理解有誤,以為說的是在這兒要繼續下一課呢!
謝謝悶哥說明~~^^

作者: Francis    时间: 2014-11-15 01:06
gt.adan 发表于 2014-11-14 11:36
哈!原來如此!阿丹理解有誤,以為說的是在這兒要繼續下一課呢!
謝謝悶哥說明~~^^

謝謝阿丹回覆!
想請問一下,有没有按12樓所述『按一下Ctrl+Enter來分隔行數』試一下11樓那個宏?效果如何?
謝謝關注!


作者: Francis    时间: 2014-11-15 11:10
還沒見丹哥回覆,難道悶人做錯了什麼事情?
作者: gt.adan    时间: 2014-11-15 12:19
Francis 发表于 2014-11-15 11:10
還沒見丹哥回覆,難道悶人做錯了什麼事情?

悶哥請別生氣呀~剛才在上音樂課,所以沒能即時回覆,勿怪~
由於電腦重灌尚未安裝gif軟體,不得已只有請悶移駕看一下操作過程了…><
https://dl.dropboxusercontent.co ... -11-15_12-08-29.mp4

執行結果:成功!如悶哥所指導的,必需以「Ctrl+Enter」來分行,方可執行代碼。
[attach]1210552[/attach]

再一次求教悶哥,檔名是簡體字時執行代碼會出現錯誤如下:
[attach]1210554[/attach]

[attach]1210553[/attach]



作者: Francis    时间: 2014-11-15 12:38
gt.adan 发表于 2014-11-15 12:19
悶哥請別生氣呀~剛才在上音樂課,所以沒能即時回覆,勿怪~
由於電腦重灌尚未安裝gif軟體,不得已只 ...

影片很方便就看到了,做得很好。{:soso_e179:}
現在試一下簡體字檔名,請稍候片刻。{:soso_e100:}
作者: Francis    时间: 2014-11-15 13:19
gt.adan 发表于 2014-11-15 12:19
悶哥請別生氣呀~剛才在上音樂課,所以沒能即時回覆,勿怪~
由於電腦重灌尚未安裝gif軟體,不得已只 ...

找到原因了。
由於VBA某些函數不兼容Unicode,閱讀中文字的時候就會分拆為2個Byte(字節)來處理。
這些函數在BIG5內碼的環境分拆簡體字會出現衝碼(分拆出不兼容檔案名稱的字節),導致報錯。
解決方法有2
1. 採用兼用Unicode函數傳回檔案名稱。(並不容易)
2. 借助其他兼用Unicode的軟件傳回檔案名稱。(例如 Excel)
3. 系統設定為GB內碼。

ps:
1. 在GB內碼的環境分拆正體字是不會出現衝碼的。
2. 設定內碼環境的方法是:控制台》時鐘、語言和區域》地區及語言》系統管理》非 Unicode 程式的語言》變更系統地區設定(設定後需要重啟電腦的)



作者: gt.adan    时间: 2014-11-15 14:27
Francis 发表于 2014-11-15 13:19
找到原因了。
由於VBA某些函數不兼容Unicode,閱讀中文字的時候就會分拆為2個Byte(字節)來處理。
這 ...

太專業了!謝謝悶哥的說明~~^^

我個人覺得這個代碼還是好用的,它是個基礎,是個開始進入批次修改的領域。
要自行加入的代碼內容,就看大家的工作需求了~~

作者: Francis    时间: 2014-11-15 15:02
gt.adan 发表于 2014-11-15 14:27
太專業了!謝謝悶哥的說明~~^^

我個人覺得這個代碼還是好用的,它是個基礎,是個開始進入批次修改的領 ...

謝謝阿丹回覆,是的,這段代碼簡短,容易入門。
贈阿丹一個包作為下午茶之用。{:soso_e113:}

[attach]1210566[/attach]


作者: Francis    时间: 2014-11-16 19:24
本帖最后由 Francis 于 2014-11-17 09:50 编辑
gt.adan 发表于 2014-11-13 22:30
謝謝梧桐,期待悶哥繼續開課~~^^

回想一下,可能阿丹對6樓那個對話框依然感興趣,就繼續說說吧。
由於SW-API沒有提供『選取資料夾對話框』的函數,那就需要用到 Windows-API 其中的 shell32.dll 來實現,
做法是,在宏內再加多一個模組(模塊),加入以下語句:
  1. Private Const BIF_RETURNONLYFSDIRS As LongPtr = &H1
  2. Private Const BIF_DONTGOBELOWDOMAIN As LongPtr = &H2
  3. Private Const BIF_RETURNFSANCESTORS As LongPtr = &H8
  4. Private Const BIF_BROWSEFORCOMPUTER As LongPtr = &H1000
  5. Private Const BIF_BROWSEFORPRINTER As LongPtr = &H2000
  6. Private Const BIF_BROWSEINCLUDEFILES As LongPtr = &H4000
  7. Private Const MAX_PATH As Long = 260

  8. Type BrowseInfo
  9.     hOwner As LongPtr
  10.     pidlRoot As LongPtr
  11.     pszDisplayName As String
  12.     lpszINSTRUCTIONS As String
  13.     ulFlags As LongPtr
  14.     lpfn As LongPtr
  15.     lParam As LongPtr
  16.     iImage As LongPtr
  17. End Type

  18. Type SHFILEOPSTRUCT
  19.     hwnd As LongPtr
  20.     wFunc As LongPtr
  21.     pFrom As String
  22.     pTo As String
  23.     fFlags As Integer
  24.     fAnyOperationsAborted As Boolean
  25.     hNameMappings As LongPtr
  26.     lpszProgressTitle As String
  27. End Type

  28. Declare PtrSafe Function SHBrowseForFolderA Lib "shell32.dll" _
  29.   (lpBrowseInfo As BrowseInfo) As LongPtr
  30.   
  31. Declare PtrSafe Function SHGetPathFromIDListA Lib "shell32.dll" _
  32.   (ByVal pidl As LongPtr, ByVal pszPath As String) As Boolean

  33. Function BrowseFolder(Optional Caption As String = "") As String
  34.      
  35.     Dim BrowseInfo As BrowseInfo
  36.     Dim FolderName As String
  37.     Dim ID As LongPtr
  38.     Dim Res As Boolean
  39.      
  40.     With BrowseInfo
  41.         .hOwner = 0
  42.         .pidlRoot = 0
  43.         .pszDisplayName = String$(MAX_PATH, vbNullChar)
  44.         .lpszINSTRUCTIONS = Caption
  45.         .ulFlags = &H1
  46.         .lpfn = 0
  47.     End With
  48.     FolderName = String$(MAX_PATH, vbNullChar)
  49.     ID = SHBrowseForFolderA(BrowseInfo)
  50.     If ID Then
  51.         Res = SHGetPathFromIDListA(ID, FolderName)
  52.         If Res Then
  53.             BrowseFolder = Left$(FolderName, InStr(FolderName, _
  54.             vbNullChar) - 1)
  55.         End If
  56.     End If
  57.      
  58. End Function
复制代码
這就可以生成了自己的『選取資料夾對話框』的函數:BrowseFolder 了。


再回到自訂表單(用戶窗體)見5樓,建立多一個按鈕,
雙擊新增的按鈕,貼上以下代碼:
  1. Private Sub CommandButton2_Click()
  2. myPath = BrowseFolder("TEST")
  3. TextBox1 = TextBox1 & myPath & Chr(13)
  4. End Sub
复制代码
需注意,宏程序的名稱 必須與 按鈕的名稱“CommandButton?”一致。
修改2個按鈕的Caption,可讓用起來更便利,
例如:按鈕 CommandButton1的Caption叫做『處理資料夾內所有零件的瑣事』及 按鈕 CommandButton2的Caption叫做『選取資料夾』。

注意:由於這個做法存在3個致命弱點:
1. 在某情況有衝碼現象。
2. 瀏覽資料夾不能設定默認路徑,及不會記憶之前的路徑位置,導致每次都要從『我的電腦』點選下去,非常繁瑣。
3. 資料夾內不一定所有零件檔案都需要處理瑣事的,執行前要把例外檔案移開,非常不便。

加上採用Excel作為界面的課題已經開展,感到這課題繼續下去的意義不大,
但又顧慮到做事需有始有終,故此作出上述說明。

如各位有興趣,是可繼續討論這課題下去的。





作者: wutong490    时间: 2014-11-17 21:24
本帖最后由 wutong490 于 2014-11-19 21:44 编辑

还请检验一下。
有如下问题,当我录制一个存为igs的宏后 ,我做的宏可以执行另存零件为igs,更换文件夹后还处理第一次选择文件夹的零件。
当关闭SW再开启的时候,宏就不处理零件了


(测试宏已经删除)


作者: Francis    时间: 2014-11-17 23:07
繼續期待阿丹跟進這課題,不希望又出現另一宗半途而廢的事件。
作者: gt.adan    时间: 2014-11-17 23:32
本帖最后由 gt.adan 于 2014-11-17 23:35 编辑
Francis 发表于 2014-11-17 23:07
繼續期待阿丹跟進這課題,不希望又出現另一宗半途而廢的事件。

悶哥請放心!「半途而廢」就請您寬心了,這一點阿丹絕無可能讓您失望~
尤其這還是阿丹主動要求悶哥繼續指導的呢!

請給阿丹一點點時間,忙完專案或是其間有較完整的時間一定立刻練習、回覆!



作者: wutong490    时间: 2014-11-17 23:51
Francis 发表于 2014-11-17 23:07
繼續期待阿丹跟進這課題,不希望又出現另一宗半途而廢的事件。

{:soso_e115:}
插嘴了,见谅

作者: Francis    时间: 2014-11-18 00:17
本帖最后由 Francis 于 2014-11-18 00:28 编辑
wutong490 发表于 2014-11-17 21:24
还请检验一下。
有如下问题,当我录制一个存为igs的宏后 ,我做的宏可以执行另存零件为igs,更换文件夹后 ...
  1. longstatus = Part.SaveAs3("C:\Users\Administrator\Desktop\闸板\顶密封销.IGS", 0, 0)
复制代码
以上這句錄製回來的,打開什麼文件也好,都只會保存到代碼中的文件位置及名稱。

需使用GetPathName傳回整個文件名稱,可參考如以下代碼:
  1. MyFileName=Part.GetPathName
  2. MyFileNameL=LEN(MyFileName)
  3. MyFileNameIGS=Left(MyFileName, MyFileNameL - 6) & "IGS"
  4. Part.SaveAs3 MyFileNameIGS, 0, 0
复制代码


作者: gt.adan    时间: 2014-11-18 00:22
wutong490 发表于 2014-11-17 23:51
插嘴了,见谅

梧桐,謝謝你提醒我還有功課沒交。回覆一下你的問題…
使用你分享的另存igs代碼 ,樓上所說的情況,在我測試是ok的!
沒有重啟程序就不存檔的問題~
請繼續熱情參與討論,求教於悶哥,一同學習!

作者: gt.adan    时间: 2014-11-18 01:44
【補充】試用梧桐版主的「另存igs格式代碼」,情況如下…(是否代碼編寫不當所造成?)
1.第一次可以執行成功。再選擇其他(單一,非複選)資料夾,還是只有對前次所選資料夾內的檔案動作
   即使重新開機,依舊如此--->難道有記憶的問題?
2.複選資料夾,執行宏代碼,依然只針對第一次選擇的資料夾動作,除非在每個資料之後加上"\"
   此時,會對全部所選資料夾動作,但是轉存igs格式的結果,只會放存在第一次選取的資料夾
   而不是依個別的資料夾存放。
3.若是依悶哥教程中的代碼不添加任何動作語法(即結果是遍歷所選資料夾中所有零件,打開後直接存檔)
   則沒有任何問題。執行動作是成功的。(因為檔案日期有更新。)


作者: gt.adan    时间: 2014-11-18 10:46
梧桐加上了另存成igs格式的代碼,執行起來是有小問題的。
我就沒有添加任何代碼了,直接執行悶大的代碼(等於打開重新存檔)。
操作如下,請悶哥指導~~

[attach]1210693[/attach]

另外,請問悶哥,為什麼這段新增的代碼無法在2012版執行呢?{:soso_e132:}


作者: Francis    时间: 2014-11-18 11:07
gt.adan 发表于 2014-11-18 10:46
梧桐加上了另存成igs格式的代碼,執行起來是有小問題的。
我就沒有添加任何代碼了,直接執行悶大的代碼(等 ...
另外,請問悶哥,為什麼這段新增的代碼無法在2012版執行呢?
請問執行的情況是怎樣?有沒有錯誤提示?


作者: wutong490    时间: 2014-11-18 11:49
gt.adan 发表于 2014-11-18 10:46
梧桐加上了另存成igs格式的代碼,執行起來是有小問題的。
我就沒有添加任何代碼了,直接執行悶大的代碼(等 ...

还请阿丹附上 宏  
我昨晚在家里修改过几次,阿丹现有的我也记不清是那个版本了{:soso_e107:}

作者: wutong490    时间: 2014-11-18 12:31
本帖最后由 wutong490 于 2014-11-18 12:34 编辑

还有一种可以执行的情况
打开目标文件夹的一个零件,另存为IGS,(关闭或不关闭零件)
再执行宏,能够完成另存
重启SW后,宏不能完成另存
[attach]1210699[/attach]

作者: gt.adan    时间: 2014-11-18 14:00
Francis 发表于 2014-11-18 11:07
請問執行的情況是怎樣?有沒有錯誤提示?

回悶哥,不用執行…代碼貼上就亮紅了…(如下圖,2012版次)
也請悶哥指導,怎麼會如梧桐的情況,另存成igs格式時,
會將不同資料夾的檔案全部存到同一個…

[attach]1210706[/attach]

作者: wutong490    时间: 2014-11-18 20:43
gt.adan 发表于 2014-11-18 14:00
回悶哥,不用執行…代碼貼上就亮紅了…(如下圖,2012版次)
也請悶哥指導,怎麼會如梧桐的情況,另存成ig ...

回家我又测试了一下
昨天的文件夹还是会出现不选择也同样执行的现象。(查看了VB的监视窗口,在执行完已经选择的文件夹后不知道为什么就跳到诡秘的文件夹了。这时PartFileName的值指向诡秘文件夹,PartPaths的值没有指向诡秘文件夹,见鬼了)
重新弄两个文件夹后没有出现执行和选择不一致的现象。
还请阿丹删除昨天的文件夹后再重新试验一下

修改代码
TextBox1 = TextBox1 & myPath & "\" & Chr(13)

作者: Francis    时间: 2014-11-18 21:47
gt.adan 发表于 2014-11-18 14:00
回悶哥,不用執行…代碼貼上就亮紅了…(如下圖,2012版次)
也請悶哥指導,怎麼會如梧桐的情況,另存成ig ...

悶人不清楚為什麼會這樣,希望阿丹找出原因,並請告知,期待中。

作者: Francis    时间: 2014-11-18 21:54
本帖最后由 Francis 于 2014-11-18 21:58 编辑
wutong490 发表于 2014-11-18 20:43
回家我又测试了一下
昨天的文件夹还是会出现不选择也同样执行的现象。(查看了VB的监视窗口,在执行完 ...

分別下載了梧桐的兩個宏,奇怪內容差距很大,而且內含亂碼,是不是悶人錯過了一些事請?
而且,到現時為止,還是搞不清梧桐打算具體加入什麼功能。


作者: wutong490    时间: 2014-11-18 22:25
本帖最后由 wutong490 于 2014-11-19 13:21 编辑
Francis 发表于 2014-11-18 21:54
分別下載了梧桐的兩個宏,奇怪內容差距很大,而且內含亂碼,是不是悶人錯過了一些事請?
而且,到現時為 ...

回闷大
宏内的代码都是复制闷大提供的,乱码可能是简体和繁体转换的原因。
因为后来的宏是用闷大提供的代码,所以和先前的有差别
宏的功能是把文件夹中的零件全部另存为igs格式。





开始MyFileName的值还在选择的文件夹,但是这个文件夹搜索完成后就跳到了另外一个当前未被选择的文件夹。



[attach]1210752[/attach]



作者: Francis    时间: 2014-11-18 23:09
wutong490 发表于 2014-11-18 22:25
回闷大
宏内的代码都是复制闷大提供的,乱码可能是简体和繁体转换的原因。
因为后来的宏是用闷大提供 ...

謝謝梧桐回覆。
首先,不需要用大字體,默認的字體已經可以。
另外,所說的亂碼,相信的經過繁體電腦編輯再到梧桐的簡體電腦所致。
雖然代碼中的註解顯示為亂碼沒有影響,不過最好還是弄成看得懂,以利維護程序。

悶人不是反對私下分組討論,但也是需要顧慮其他人的感受,有必要說清楚一點的。


作者: wutong490    时间: 2014-11-18 23:29
本帖最后由 wutong490 于 2014-11-18 23:33 编辑
Francis 发表于 2014-11-18 23:09
謝謝梧桐回覆。
首先,不需要用大字體,默認的字體已經可以。
另外,所說的亂碼,相信的經過繁體電腦編 ...

{:soso_e100:}知道了。
还请闷大测试,看能否遇到gif中的情况。
作者: Francis    时间: 2014-11-18 23:47
wutong490 发表于 2014-11-18 23:29
知道了。
还请闷大测试,看能否遇到gif中的情况。

用您的宏略作修改:
1. 更正所有亂碼為GB碼
2. 補充"\"字符
3. 加上輸出位置的選項
4. 在3個對話框加上了具意義的標題
[attach]1210755[/attach][attach]1210754[/attach]

作者: 大鹿    时间: 2014-11-19 11:32
wutong490 发表于 2014-11-17 21:24
还请检验一下。
有如下问题,当我录制一个存为igs的宏后 ,我做的宏可以执行另存零件为igs,更换文件夹后 ...


谢谢wutong490版主无私分享,
但下载了提供的宏,用过了,什么也没发生,不明白用处,可否说明?

另,俺逐一帖子看过,感觉有点鸡同鸭讲,看得俺也糊涂了,请问wutong490版主可否明示?帮助像俺这样的菜鸟也能了解在讨论什么,先行谢过!
作者: zyf0732    时间: 2014-11-19 11:43
gt.adan 发表于 2014-9-23 15:09
【練習】用悶大的代碼加入鈑金的展開及抑制,達成「批量重整」模型

请问大侠用宏 给零件加入自定义属性及值,这个宏语句怎么写?望大侠及各位高手赐教!

作者: wutong490    时间: 2014-11-19 12:34
本帖最后由 wutong490 于 2014-11-20 11:08 编辑
大鹿 发表于 2014-11-19 11:32
谢谢wutong490版主无私分享,
但下载了提供的宏,用过了,什么也没发生,不明白用处,可否说明?

鹿大说的极是,是俺的表达有问题。
现在这个几个调用Windows-API 的宏都偶尔会出现处理未选择文件夹中零件的情况。
这个不知道是为什么,当然也不能说和Windows-API 有关。

还请看40楼的gif 。  后面宏的MyFileName指向了一个并未选择的文件夹中的零件。(在图片右下角的监事窗口可以看到MyFileName的值)

作者: 大鹿    时间: 2014-11-19 13:13
wutong490 发表于 2014-11-19 12:34
鹿大说的极是,是俺的表达有问题。
现在这个几个调用Windows-API 的宏都偶尔会出现处理未选择文件夹中零 ...

谢谢版主回帖说明,让俺可明白多一点。{:soso_e181:}不过俺怀疑25楼的附件有问题,估计是个错手上传的不正确文件吧。
俺看了一下在35楼的附件,有可能是代码中欠缺对变量的声明,导致不稳定,
还是建议将所有变量作出适当的声明,一来更稳稳定,更可节约系统资源。
比如:
Dim MyFIleName As String


作者: zyf0732    时间: 2014-11-19 16:07
Francis 发表于 2014-11-18 23:47
用您的宏略作修改:
1. 更正所有亂碼為GB碼
2. 補充"\"字符

感谢分享!万分感谢!

作者: wutong490    时间: 2014-11-19 18:25
大鹿 发表于 2014-11-19 13:13
谢谢版主回帖说明,让俺可明白多一点。不过俺怀疑25楼的附件有问题,估计是个错手上传的不 ...

回鹿大
这个早定义没能解决根本问题
倒是我自己乱弄了一下,暂时解决了这个问题
For i = 0 To UBound(PartPaths) - 1
这样暂时没有出现问题,但是我不知道原因


作者: 大鹿    时间: 2014-11-19 19:01
wutong490 发表于 2014-11-19 18:25
回鹿大
这个早定义没能解决根本问题
倒是我自己乱弄了一下,暂时解决了这个问题

终于找到症结,恭喜版主。

作者: zyf0732    时间: 2014-11-19 21:46
本帖最后由 zyf0732 于 2014-11-19 21:52 编辑
wutong490 发表于 2014-11-19 18:25
回鹿大
这个早定义没能解决根本问题
倒是我自己乱弄了一下,暂时解决了这个问题

非常感谢梧大侠的无私奉献,我通过修改梧大侠的代码生成了一个批量给文件加指定自定义属性的宏,一下子工作量就小了不少,非常感谢!并同时感谢闷大和gt.adan的探索和奉献!!
[attach]1210816[/attach]

作者: wutong490    时间: 2014-11-19 21:52
本帖最后由 wutong490 于 2014-11-19 21:54 编辑
zyf0732 发表于 2014-11-19 21:46
非常感谢梧大侠的无私奉献,我通过修改梧大侠的代码生成了一个批量给文件加指定自定义属性的宏,一下子工 ...

我等只是受益者,
最终感谢的是闷大

以下的链接中还有一个更便捷的方法
https://www.solidworks.org.tw/forum.php?mod=viewthread&tid=26031&extra=page%3D1


作者: zyf0732    时间: 2014-11-19 21:54
wutong490 发表于 2014-11-19 21:52
我等只是受益者,
最终感谢的是闷大

非常同意!致谢闷大和gt.adan

作者: gt.adan    时间: 2014-11-20 00:08
wutong490 发表于 2014-11-18 22:25
回闷大
宏内的代码都是复制闷大提供的,乱码可能是简体和繁体转换的原因。
因为后来的宏是用闷大提供 ...

梧桐,除了你#49分享的方法以外,我昨天還有發現一個問題,如下圖
圖中在點選文件夾以後會多出一行,此時若直接運行宏,就會出現我們碰到的「靈異事件」…
如果按下「Backspace」刪除該行再運行宏,搭配上悶大修改的宏,就完全沒問題了。
也許如大鹿先生所說的,你那句代碼就是解決之道了~

[attach]1210820[/attach]


作者: 愛玩家    时间: 2014-11-20 11:59
gt.adan 发表于 2014-11-18 14:00
回悶哥,不用執行…代碼貼上就亮紅了…(如下圖,2012版次)
也請悶哥指導,怎麼會如梧桐的情況,另存成ig ...

估计是系统版本的问题。既有新的版本,旧的语法就让它过去吧!
俺自己有一些XP时代的宏拿来现在的系统也是不能用了。


作者: 大鹿    时间: 2014-11-20 12:24
愛玩家 发表于 2014-11-20 11:59
估计是系统版本的问题。既有新的版本,旧的语法就让它过去吧!
俺自己有一些XP时代的宏拿来现在的系 ...

这是系统不同所引起,但不是版本,而是位元,32bit和64bit之别,欲兼容,可微调,详见连接:
https://msdn.microsoft.com/en-us ... v=office.15%29.aspx


作者: 愛玩家    时间: 2014-11-20 13:18
大鹿 发表于 2014-11-20 12:24
这是系统不同所引起,但不是版本,而是位元,32bit和64bit之别,欲兼容,可微调,详见连接:
https://msd ...

谢谢大鹿先生的说明!{:soso_e181:}

作者: ryouss    时间: 2015-3-20 09:01
精彩主題,謝謝分享學習了!
作者: dreamsboy    时间: 2015-3-26 22:12
Francis 发表于 2014-11-13 23:36
12樓有回复,這個主題是為了『外部批次修改屬性』或『利用Excel作為用戶界面 ...

闷大您好。
你这帖子第一个链接中的那个”無需運行SW程序, 批量修改工程圖檔案屬性“这个帖子中的附件,因为没有注册,无法下载。现在的情况是我无法注册,不知是因为是TW网站所以被屏蔽了些东西还是什么原因,我用IE浏览器打开那个网站,点击注册,同样还是在那个”验证问答“那里卡了壳,不显示问题,我没法做”验证问答“这一步,注册不了。下载了附件,但是找不到解压密码。能否请告知下解压密码?万分感激。
作者: 莱虫    时间: 2016-4-20 11:27
此『瑣事宏』在別處給丹大說成了「批量****」,不解?
作者: yuxin6618    时间: 2016-9-4 08:48
谢谢各位大师的无私奉献
作者: 羊三丫    时间: 2017-3-1 08:37
闷大:您好!
    看过许多您的贴子,对我帮助极大,感谢您的无私付出。
    刚刚这个代码我试了一下,完全可用,但是却只能打开零件,对装配体和工程图无用,麻烦您抽空帮忙改一下吗?再次拜谢!!

作者: 羊三丫    时间: 2017-3-1 08:38
闷大:您好!
    看过许多您的贴子,对我帮助极大,感谢您的无私付出。
    刚刚这个代码我试了一下,完全可用,但是却只能打开零件,对装配体和工程图无用,麻烦您抽空帮忙改一下吗?再次拜谢!!


作者: makejon    时间: 2018-10-4 07:29
很好的学习的贴子

作者: 钱百万    时间: 2019-4-12 18:08
.0.0.0.
作者: 285240263@qq.co    时间: 2020-12-10 13:53
好复杂,好厉害
作者: 285240263@qq.co    时间: 2020-12-10 15:41
zyf0732 发表于 2014-11-19 21:46
非常感谢梧大侠的无私奉献,我通过修改梧大侠的代码生成了一个批量给文件加指定自定义属性的宏,一下子工 ...

可以分享一下吗?
作者: 懒懒的高贵    时间: 2022-12-10 14:42
感谢分享,很不错




欢迎光临 iCAx开思网 (https://www.icax.org/) Powered by Discuz! X3.3