



Random Thoughts |
Join the Army, meet interesting people, kill them.
|

言語 |
|




|
 |
フォーラムニュース: 質問、相談カテゴリに「SolidWorks操作方法」に関するフォーラムを追加しました。(2003/11/27) |
いらっしゃい、 ゲストさん. まずはこちら→ ログイン または 登録. 2025/04/11 - 20:11:53 |
|
 |
|

著者
|
トピック: アセンブリにパーツを追加するには? (閲覧数 2702 回) |
|
thontyan
新人さん 
オフライン
投稿: 7

I'm a llama!
|
 |
アセンブリにパーツを追加するには?
« 投稿日: 2011/03/06 - 18:15:17 » |
|
御世話になっています。
なにげにできると思っていたことができなくて困っています。 アクティブなアセンブリに対して任意のパーツ(ファイル名、パスが解っている)を追加したいのですが、AddComponent4だけでは うまくいきません。HelpのAdd Component and Mate Example (VB) では 一度 パーツをオープンしてから AddComponent4するサンプルがあり これだとうまく行きますが いちいち パーツをオープンし、アクティブの切り換えをする必要があるのでしょうか?
宜しくお願い致します。
|
|
|
|
hisa
カタマリの王様!?     
オフライン
投稿: 507

PANDA-Z!!
|
 |
Re:アセンブリにパーツを追加するには?
« 返信 #1 投稿日: 2011/03/07 - 13:41:55 » |
|
thontyan さんが仰る通り、構成部品を追加する場合は部品を開いてから挿入する必要があります。
そうなると、追加する構成部品はアセンブリとは異なるグラフィック領域を使用するため、メモリを無駄に食ってしまいます… 
それを避けるためには、SldWorks::DocumentVisible を利用して、一時的に新しく開くドキュメントを表示させなくすれば、メモリ消費の観点及びドキュメントのアクティブ切り替え不要となります 
とりあえず、以下は簡単なサンプルコードです。
Code:Option Explicit
Sub main()
Dim swApp As SldWorks.SldWorks Dim swAssy As SldWorks.AssemblyDoc Dim swModel As SldWorks.ModelDoc2 Dim swComp As SldWorks.Component2 Dim swDocSpec As SldWorks.DocumentSpecification Set swApp = Application.SldWorks swApp.DocumentVisible False, swDocPART swApp.DocumentVisible False, swDocASSEMBLY Set swAssy = swApp.ActiveDoc Set swDocSpec = swApp.GetOpenDocSpec("C:Assem1.SLDASM") swDocSpec.UseLightWeightDefault = False swDocSpec.LightWeight = True swDocSpec.Silent = True Set swModel = swApp.OpenDoc7(swDocSpec) Set swComp = swAssy.AddComponent4(swModel.GetPathName, "", 0#, 0#, 0#) swApp.DocumentVisible True, swDocASSEMBLY swApp.DocumentVisible True, swDocPART
End Sub |
※追加する構成部品がアセンブリ且つライトウェイトで開ける状態であれば、強制的にライトウェイトで開く処理をしてます。 ※実際には例外処理でドキュメントが非表示設定のままにならない工夫が必要です。
|
|
|
|
thontyan
新人さん 
オフライン
投稿: 7

I'm a llama!
|
 |
Re:アセンブリにパーツを追加するには?
« 返信 #2 投稿日: 2011/03/07 - 15:21:31 » |
|
hisaさん
ありがとうございます。 やはりそうですか... 非表示は、いい方法ですね。参考にさせて頂きます。
今後とも宜しくお願い致します。
|
|
|
|
|
|
|

|