SolidWorks專門論壇 SolidWorks forum

 找回密碼
 註冊
查看: 30209|回復: 51

移除深層外觀記錄(巨集在13#)

[複製鏈接]
發表於 2015/3/11 14:39:09 | 顯示全部樓層 |閱讀模式
移除不掉的塗彩裝飾螺紋線
因為一邊想一邊設計 所以特徵很多別笑我啊
我的目的只有前後端要塗彩裝飾螺紋,結果連中間也裝飾螺紋
而且已經沒裝飾螺紋特徵~還是顯示
附上2012檔案~請問,誰有辦法移除....

請!不要跟我說把塗彩裝飾螺紋關掉....


回到第1個特徵 也是~



這是我要的(後來重劃一支)





本帖子中包含更多資源

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

x
發表於 2015/3/11 14:56:44 | 顯示全部樓層

本帖子中包含更多資源

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

x
發表於 2015/3/11 15:04:02 | 顯示全部樓層
豬大好猛~~~
 樓主| 發表於 2015/3/11 15:21:32 | 顯示全部樓層

感謝小豬大~
我只做了一半~原來還要選面
學習了~謝謝你

PS.為什麼選面就好...不知道原因
發表於 2015/3/11 16:23:09 | 顯示全部樓層
 樓主| 發表於 2015/3/11 16:43:26 | 顯示全部樓層
Francis 發表於 2015/3/11 16:23
茱妹忘記了....
http://www.solidworks.org.tw/forum.php?mod=viewthread&tid=24229&extra=page%3D1

回悶哥~我有試過 但是..如下


本帖子中包含更多資源

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

x
發表於 2015/3/11 17:10:01 | 顯示全部樓層
judyyai 發表於 2015/3/11 16:43
回悶哥~我有試過 但是..如下

茱妹的“但是..”指什麼呢?悶人愚笨,茱妹的動畫中已經成功移除那個“移除不掉的塗彩裝飾螺紋線”。“但是..”是什麼呢?勞煩茱妹指導一下悶人。
 樓主| 發表於 2015/3/11 17:17:23 | 顯示全部樓層
Francis 發表於 2015/3/11 17:10
茱妹的“但是..”指什麼呢?悶人愚笨,茱妹的動畫中已經成功移除那個“移除不掉的塗彩裝飾螺紋線”。“但 ...

回悶哥~
但是....指的是,後面那端還沒移除
因為,這個檔案目前沒有,裝飾螺紋線特徵存在(請看1F的第1張圖)
正常不該有塗彩裝飾螺紋!

可能第三張圖,讓你誤會了
是因為我無法解決~所以又重劃了



發表於 2015/3/11 18:27:11 | 顯示全部樓層
judyyai 發表於 2015/3/11 17:17
回悶哥~
但是....指的是,後面那端還沒移除
因為,這個檔案目前沒有,裝飾螺紋線特徵存在(請看1F的第1張圖)

肉腳也試過 , 跟 judyyai 姐的答案一樣 , 目前還是想不透為何 ?
發表於 2015/3/11 18:35:47 | 顯示全部樓層
judyyai 發表於 2015/3/11 17:17
回悶哥~
但是....指的是,後面那端還沒移除
因為,這個檔案目前沒有,裝飾螺紋線特徵存在(請看1F的第1張圖)

重畫!如果是複雜零件,豈不是...(學習茱妹欲言又止)。
悶人方法不多,來來去去只有那幾招。
相反,茱妹見識廣博,會的解決方法是悶人好幾十倍,
悶人估計茱妹故意假裝解決不了,讓悶人可以發言一下。

如果遇到零件出現病態,可採取『淨化模型』來“自動重畫”,更可把他人辛苦建立的零件,化為由自己秒殺畫出來的。
『淨化模型』的做法見連接:(27樓)
http://www.solidworks.org.tw/for ... hread&tid=26140
或見站長克隆的教程:
http://www.solidworks.org.tw/for ... hread&tid=26392
 樓主| 發表於 2015/3/11 21:46:13 | 顯示全部樓層
Francis 發表於 2015/3/11 18:35
重畫!如果是複雜零件,豈不是...(學習茱妹欲言又止)。
悶人方法不多,來來去去只有那幾招。
相反,茱 ...

謝謝悶哥~
Judy下次知道如何處理了~

本帖子中包含更多資源

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

x
發表於 2015/3/11 22:03:25 | 顯示全部樓層
其實是外觀路徑遺失,無法在DISPLAY MANAGER查詢模型所有外觀紀錄(這是BUG)

所以你只要再RUN一遍外觀 當然無法找到該外觀貼附,就會以無貼附"還給你"
這屬於系統面理論  有很多解決方法 就是再做一遍就回來,例如:編輯有問題的特徵>確定 或編輯有問題的草圖>退出草圖,屢試不爽

以前大郎都被各位KO  這回嘿嘿

本帖子中包含更多資源

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

x
發表於 2015/3/12 11:04:26 | 顯示全部樓層
的確,【脫色大法】未能清除深層的外觀記錄。
悶人隨手寫了一個簡短的巨集(清除深層的外觀記錄),希望茱妹用得著。
  1. Sub main()
  2. Set swApp = Application.SldWorks
  3. Set ModelDoc = swApp.ActiveDoc
  4. If ModelDoc Is Nothing Then MsgBox "Please open a part.": Exit Sub:
  5. If ModelDoc.GetType <> 1 Then MsgBox "Please open a part.": Exit Sub:
  6. htDocProperty = ModelDoc.MaterialPropertyValues
  7. htbodies = ModelDoc.GetBodies2(-1, False)
  8. If Not IsEmpty(htbodies) Then
  9.     For Each htBody In htbodies
  10.         Set Face = htBody.GetFirstFace
  11.         While Not Face Is Nothing
  12.             Face.MaterialPropertyValues = htDocProperty
  13.             Face.RemoveMaterialProperty
  14.             Set Face = Face.GetNextFace
  15.         Wend
  16.     Next
  17. End If
  18. ModelDoc.ForceRebuild3 (False)
  19. End Sub
複製代碼
 樓主| 發表於 2015/3/12 12:09:34 | 顯示全部樓層
Francis 發表於 2015/3/12 11:04
的確,【脫色大法】未能清除深層的外觀記錄。
悶人隨手寫了一個簡短的巨集(清除深層的外觀記錄),希望茱 ...

感謝悶哥~真的很好用
都移除了~謝謝你


本帖子中包含更多資源

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

x
發表於 2015/3/12 13:45:46 | 顯示全部樓層
建議標題改為:移除深層外觀記錄(巨集在13#)
發表於 2015/3/12 15:05:29 | 顯示全部樓層
闷大太强悍了,谢谢分享,已收藏
發表於 2015/3/13 21:22:54 | 顯示全部樓層
真的是肉腳 發表於 2015/3/11 18:27
肉腳也試過 , 跟 judyyai 姐的答案一樣 , 目前還是想不透為何 ?

不知道肉腳研究13樓的代碼進展如何?
悶人先說說重點吧。
怎樣才可深層清除外觀,方法就是“先給後除”,就好像要清理行動碟,單單刪除有機會被別人還原一些不可告人的秘密,只要刪除後寫入一些沒意義的檔案填滿行動碟再一次刪除,那就相當於“深層刪除檔案”了,第12句就是賦予面一些暫時顏色,而那些顏色就是從第6句所獲得的,那些就是本身模型的顏色了。
其實只要略作修改,再加上對話框,那就是以造出更多選項、更多更能的巨集了。
發表於 2015/3/14 10:57:34 | 顯示全部樓層
Francis 發表於 2015/3/13 21:22
不知道肉腳研究13樓的代碼進展如何?
悶人先說說重點吧。
怎樣才可深層清除外觀,方法就是“先給後除”, ...

回覆悶哥 , 肉腳這些日子看了翻了許多書籍 , 還有網路範例 , 還是只能看得懂一些些 , 頗為吃力 , 但還不放棄 , 以此題為例 : 第六句 ( ht ) 這個指令碼的意思就不懂了 , 也不敢冒昧私下問悶哥 。

發表於 2015/3/24 23:53:54 | 顯示全部樓層
概括來說, 等號前都是自訂對象或變量,等號後就是該對象或變量的來源。
逐句說說吧
Sub main() —— 程序開端,sub是必須的;main是程序名稱,可以自行創作。
Set swApp = Application.SldWorks —— Set是VBA本身命令,用來定義對象;swApp 是新建對象的名稱,可以自行創作;Application 是VBA本身函數;SldWorks 是SWAPI對象,用來獲取SW的平台。
Set ModelDoc = swApp.ActiveDoc —— ModelDoc 是新建對象的名稱,可以自行創作;ActiveDoc 是SWAPI對象,用來獲取當前檔案。
If ModelDoc Is Nothing Then MsgBox "Please open a part.": Exit Sub: —— If 是VBA本身函數,邏輯判斷,意思是“如果沒有當前檔案,彈出意思對話框並離開此程序”;Msgbox是VBA本身命令;“:”冒號用來連接本來多行的語句為單行。
If ModelDoc.GetType <> 1 Then MsgBox "Please open a part.": Exit Sub: —— 意思是“如果當前檔案不是零件,彈出意思對話框並離開此程序”;GetType是SWAPI對象,用來獲取當前檔案的類型。1 是零件,2 是組合件,3 是工程圖。
htDocProperty = ModelDoc.MaterialPropertyValues —— 本來應該需要有Let命令開頭(相對Set命令),只是Let命令可以省略的,Let是VBA本身命令,用來定義變量;htDocProperty 是個自行定義變量的名稱,可以自行創作;MaterialPropertyValues 是SWAPI對象,用來獲取色彩參數。
htbodies = ModelDoc.GetBodies2(-1, False) —— htbodies 是個自行定義變量的名稱,可以自行創作;GetBodies 是SWAPI對象,用來獲取本體的陣列;-1 是曲面及實體的本體,0 單純實體的本體,1 曲面的本體;False 連同被隱藏的本體, True只獲取沒被隱藏的本體。
If Not IsEmpty(htbodies) Then —— 意思是“如果不是獲取空值的本體,繼續”;Not 是VBA本身函數,傳回是非反向;IsEmpty 是VBA本身函數,讀取變量是否空值。
    For Each htBody In htbodies —— For 是VBA本身函數,一種條件循環,For 有多種語法;Each 是VBA本身函數,從陣列中逐一取出定義變量或對象;htBody 是個自行定義變量的名稱,可以自行創作。
        Set Face = htBody.GetFirstFace —— Face 是個自行定義變量的名稱,可以自行創作;GetFirstFace 是SWAPI對象,用來獲取本體的第一個面。
        While Not Face Is Nothing —— While 是VBA本身函數,一種條件循環;Is 是VBA本身函數,類似等號,用來判斷對象是否相等(等號用來判斷變量是否相等);Nothing 是VBA的內設變量,代表空白的對象。意思是“直至面空白才離開”。
            Face.MaterialPropertyValues = htDocProperty —— 強行把零件的色彩參數套用到面。(深層移除的關鍵)
            Face.RemoveMaterialProperty —— 移除面的色彩參數。
            Set Face = Face.GetNextFace —— 下一個面。
        Wend —— 對應 While 的循環;Wend 是VBA本身函數。
    Next —— 對應 For 的循環;Next 是VBA本身函數。
End If —— 對應 If 完結;End 是VBA本身函數。
ModelDoc.ForceRebuild3 (False) —— 強行重建零件;ForceRebuild3 是SWAPI對象,False 只在組合件有意義,True單單重建頂層,False重建深層組合。
End Sub ——程序完

整體而言,離不開變量、函數、命令 和 對象。
函數、命令 和 對象的分別不大,可理解為“有生命力的變量”。
陣列,可以理解為“群組了的對象或變量”。
發表於 2015/3/25 00:02:11 | 顯示全部樓層
改了一下代碼,功能完全沒變,只是在改了變量名稱,供分辨之用。
  1. Sub AAA()
  2. Set BBB = Application.SldWorks
  3. Set CCC = BBB.ActiveDoc
  4. If CCC Is Nothing Then
  5.         MsgBox "沒有開啟檔案,移除什麼呀?"
  6.         Exit Sub
  7. End If
  8. If CCC.GetType <> 1 Then
  9.         MsgBox "不是吧!零件才有意義吧。"
  10.         Exit Sub
  11. End If
  12. DDD = CCC.MaterialPropertyValues
  13. EEE = ModelDoc.GetBodies2(-1, False)
  14. If Not IsEmpty(EEE) Then
  15.     For Each FFF In EEE
  16.         Set GGG = FFF.GetFirstFace
  17.         While Not GGG Is Nothing
  18.             GGG.MaterialPropertyValues = DDD
  19.             GGG.RemoveMaterialProperty
  20.             Set GGG = FFF.GetNextFace
  21.         Wend
  22.     Next
  23. End If
  24. CCC.ForceRebuild3 (False)
  25. End Sub
複製代碼
發表於 2015/3/25 13:01:09 | 顯示全部樓層
連夜寫出解讀文章,可沒人關注。
看來新生學子們口中的“想學呀!努力學習呀!用心研究呀!”,等等的說話都變成了口號罷了。
發表於 2015/3/25 13:08:01 | 顯示全部樓層
從未看過如此詳細的解說,已收下。

配合重新命名的變量名稱,看得更為明白了~~

謝謝悶哥教程!

發表於 2015/3/25 14:18:44 | 顯示全部樓層
闷大用心良苦,逐句翻译,是我们这些门外汉的福气!
借这个机会,俺有个简单问题想请教大家,
学习宏以来,一直有看到:
Dim.....as......
Set...=......俺想请教这个 Dim与Set的意思一样么?
發表於 2015/3/25 14:28:24 | 顯示全部樓層
gt.adan 發表於 2015/3/25 13:08
從未看過如此詳細的解說,已收下。

配合重新命名的變量名稱,看得更為明白了~~

謝謝丹哥回帖肯定。

誠如站長的理念:【承傳】
希望新生學子們提問的時候不要過於靦腆,一旦遭受指正也不要怒火中燒,應抱著中庸之道,平和的心情,須知道對方也是人,不應單單顧慮自己的感受,必須抱著互相尊重的態度,方可承傳。
發表於 2015/3/25 16:54:07 | 顯示全部樓層
zh.xiang 發表於 2015/3/25 14:18
闷大用心良苦,逐句翻译,是我们这些门外汉的福气!
借这个机会,俺有个简单问题想请教大家,
学习宏以来, ...

Dim 中文是『聲明』,可以理解為“預先定義(非內置)變量的性質”。
Set 中文是『賦值』,可以理解為“創建自己的對象”。

如果變量沒聲明性質,運行的時候,系統就會以最高規格的variant來定義該變量,運行時會較為浪費資源;比如boolean的變量,本來是只消耗系統八分一個位元的資源,如沒聲明,系統就會預留起碼一千個位元的資源,如果程序較大又沒做好聲明的話,系統有可能不勝負荷。

另一個Dim的用處,就是為了創建自己的對象更具互動性。例如在以上例子的前端,加上聲明“Dim swApp As SldWorks.SldWorks”,以後當鍵入swApp. 的時候,就會彈出提示窗口,列出了從屬於swApp的子對象,方便編寫。

還有,如果是跨平台的巨集,更要注意『聲明』和『引用』的正確性。
發表於 2015/3/25 17:04:56 | 顯示全部樓層
悶人明白站長以點評發問的用意,只好回答被『不好意思』。
發表於 2015/3/25 17:06:35 | 顯示全部樓層
Francis 發表於 2015/3/25 16:54
Dim 中文是『聲明』,可以理解為“預先定義(非內置)變量的性質”。
Set 中文是『賦值』,可以理解為“ ...

感覺坊間很難找到對這些說明和定義,像悶哥這樣詳細的參考書籍…
發表於 2015/3/25 18:45:53 | 顯示全部樓層
Francis 發表於 2015/3/24 23:53
概括來說, 等號前都是自訂對象或變量,等號後就是該對象或變量的來源。
逐句說說吧
Sub main() —— 程序 ...

謝悶哥如此精細的解說分享 , 肉腳先收藏 , 工作忙到一段落 , 再來學習 , 感謝您!  
發表於 2015/3/26 10:11:24 | 顯示全部樓層
Francis 發表於 2015/3/24 23:53
概括來說, 等號前都是自訂對象或變量,等號後就是該對象或變量的來源。
逐句說說吧
Sub main() —— 程序 ...

請問 , GetBodies2 獲得本體參數這項指令 , 其中 2 是否為版次關係 , 經查幫助後 , 得到下圖所示資料

" GetBodies2        Obsolete. Superseded by IComponent2::GetBodies3 "

GetBodies3 Method (IComponent2) Availability SOLIDWORKS 2009 SP4, Revision Number 17.4

那是否在2015版次中 GetBodies2 是沒法使用的? , 但是悶哥寫的卻是可以執行 ?

謝謝回覆 !!

http://help.solidworks.com/2015/english/api/sldworksapi/SolidWorks.Interop.sldworks~SolidWorks.Interop.sldworks.IComponent2_members.html

本帖子中包含更多資源

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

x
發表於 2015/3/26 11:15:44 | 顯示全部樓層
真的是肉腳 發表於 2015/3/26 10:11
請問悶哥 , GetBodies2 獲得本體參數這項指令 , 其中 2 是否為版次關係 , 經查幫助後 , 得到下圖所示資料 ...

先來個溫馨提示,在論壇討論,除非特殊因素,最好不要點名提問,否則有可能導致其他參與討論者沒意欲回答。以站長為例,以她的性格,就算她知道,她都不會回答的,不會像悶人那麼愚笨,總是抱著解決他人疑難而硬著頭皮回答的。

在SWAPI中,“Obsolete. Superseded”的意思比較含糊,可能會被理解為“被註銷”的意思,實則可以理解為 “保養失效,倘若存在BUG或導致事故,原廠將不受理” 的意思。

一般來說,語言程序都需要考慮兼容的問題,過時的語法都會盡量保留,尤其是像VBA這樣的直譯語言(interpreted programming language),確保不會為老用家帶來麻煩。

當然,新有新的好,一來可以避免固有的BUG,還可以在編寫的時候系統會自動提示(請參閱26樓:另一個Dim的用處),只不過是當分享給較低版本的用家時就無法運行了。
發表於 2015/3/26 16:38:19 | 顯示全部樓層
悶大說到重點~大郎不希望會員點名回答,不過大郎知道會員基於敬意,會順便寫下請悶大提點,

這部分會有2個層面

1.會員的敬意我們聽到了

2.別的會員即使想幫忙回答,又怕搶了風采,這是人情世故呀,例如:請問武大郎小妖精如何下載,其實很多會員都知道的,如果比大郎早回答,那不就好像表現比大郎還厲害,不回答又憋不住。只好等大郎醒來,大郎剛好路過(大郎不見得每天都點閱所有提問)來回答,否則大郎就是會員眼中的石頭,大郎不回答又好像怪怪的.

3.話說大郎沒有網路,所以不知道小妖精如何下載,不要再短訊息問了
發表於 2015/3/26 17:48:49 | 顯示全部樓層
If Not IsEmpty(htbodies) Then
    For Each htBody In htbodies
此兩句肉腳還是不是很能理解 , 引用VB參閱資料  " IsEmpty 函數 = 傳回 Boolean 值,用來指出變數是否已經初始化。"
請問什麼是 變數初始化 ?
依照悶哥的注釋 , 肉腳是理解為
"假如獲取的本體不是空的則繼續逐一提取每一本體做為定義變量"
也就是說將每個本體一一拿出來的意思 ?

感謝各位不吝指教 謝謝
發表於 2015/7/16 11:59:48 | 顯示全部樓層
大郎看了各位發帖與討論才知道嚴重性,對使用者來說是很困擾,由SOLIDWORKS 2016有解決

移除所有外觀
您可以移除組合件或次組合件內所有模型的所有外觀。

本帖子中包含更多資源

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

x
發表於 2015/7/17 02:14:47 | 顯示全部樓層
謝協提供語法~ 本人學習了不少~ 對我未來有一定的幫助!
發表於 2016/5/12 22:54:49 | 顯示全部樓層
Francis 發表於 2015/3/25 00:02
改了一下代碼,功能完全沒變,只是在改了變量名稱,供分辨之用。

谢谢闷神,很受用
第13行的Modeldoc是否为CCC
第20行的FFF是否为GGG
發表於 2016/5/13 00:32:25 | 顯示全部樓層
lxjxb 發表於 2016/5/12 22:54
谢谢闷神,很受用
第13行的Modeldoc是否为CCC
第20行的FFF是否为GGG

刻意留下的伏線,終給有心人發現,給您一個讚!

另,不是什麼“神”啦,若不厭棄,可按照茱妹叫聲“哥”。
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

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

GMT+8, 2024/4/20 03:01 , Processed in 4.002472 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

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