psychic
Sr. メンバー
オフライン
投稿: 59
I'm a llama!
|
|
L/R部品のコンフィギュレーション
« 投稿日: 2011/10/21 - 21:59:47 » |
|
こんにちは いつもお世話になっております 表題のとおりL/Rの部品をよくコンフィギュレーションで作るのですが 手動での私の手順は ”L”というコンフィギュレーションの作成 勝手反対にする面を選択してフィーチャのミラーですべてのボディを選択 元のボディを非表示 といった具合です これを反対にする面を選択して残りはマクロでできないでしょうか?
それと単品図面へ材料や個数などアセンブリより拾ってマクロで記入していますが こういった方法ですとL/Rの部品もただ単に2個と出てしまい間違えるときがあります パーツのコンフィギュレーションに”L”という名前があるか調べるには どうしたらよいでしょうか?
どうかご教授ください よろしくお願いします
|
|
|
|
Makoron
カタマリの王様!?
オフライン
投稿: 1277
SW2011SP5.0
|
|
Re:L/R部品のコンフィギュレーション
« 返信 #1 投稿日: 2011/10/24 - 09:48:24 » |
|
psychicさん、おはようございます。 いまSolidWorksが使えない状態なので試しては以内のですが・・・。
引用:表題のとおりL/Rの部品をよくコンフィギュレーションで作るのですが 手動での私の手順は ”L”というコンフィギュレーションの作成 勝手反対にする面を選択してフィーチャのミラーですべてのボディを選択 元のボディを非表示 といった具合です これを反対にする面を選択して残りはマクロでできないでしょうか? |
出来ると思います。 自動モデリング系の処理は、マクロが有効に利用できるはずですから。 マクロの記録でもほぼ近い形のものが出来上がると思います。 (コンフィギュレーションの処理あたりは作りこまないといけないかもしれません。)
引用:それと単品図面へ材料や個数などアセンブリより拾ってマクロで記入していますが こういった方法ですとL/Rの部品もただ単に2個と出てしまい間違えるときがあります パーツのコンフィギュレーションに”L”という名前があるか調べるには どうしたらよいでしょうか? |
部品表でしょうか?それとも表題欄でしょうか? 個数が表示されると言うことは部品表っぽいと思うのですが「単品図面」とあるので謎です・・・。 ちなみに、コンフィギュレーション名の取得は APIマニュアルの「Get List of Configurations Example (VB)」あたりが参考になると思います。
|
|
|
|
psychic
Sr. メンバー
オフライン
投稿: 59
I'm a llama!
|
|
Re:L/R部品のコンフィギュレーション
« 返信 #2 投稿日: 2011/10/24 - 20:54:19 » |
|
Makoronさん ありがとうございます 個数の取得はバラシ時に窓にassyファイルを選択してsdmHeaderWalkで拾ってます コンフィギュレーションが見つかったら"L/R" & 個数/2で入れようと思います
Get List of Configurations Example 参考にしてみます^^
ファイル操作のどは皆様の力でおかげさまでなんとか思いどおりのものが そこそこできるようになりました。 いよいよ自動モデリングですね・・ がんばって覚えていこうと思います^^ これができるようになれば作りたいものたくさんあります でも記録してもなかなかそのエンティティをどう使うか、 拘束の問題・・まださっぱりです こつこつやっていこっ! またお力かしてください^^
|
|
|
|
Makoron
カタマリの王様!?
オフライン
投稿: 1277
SW2011SP5.0
|
|
Re:L/R部品のコンフィギュレーション
« 返信 #3 投稿日: 2011/10/25 - 10:31:32 » |
|
引用:個数の取得はバラシ時に窓にassyファイルを選択してsdmHeaderWalkで拾ってます コンフィギュレーションが見つかったら"L/R" & 個数/2で入れようと思います |
SDM.dllを使っているのですね。 SolidWorks2007を利用しているようですが、2008か2009からSDM.dllが使えなくなるので 早めに、SWDocumentManagerAPI に切り替えていくといいと思います。 (sdm.dllについてを参照。)
あと、ミラー形状コンフィギュレーション作成のサンプルを作ったので、コードをのせておきます。 Code:Option Explicit
Sub main()
Dim i As Long
Dim swApp As SldWorks.SldWorks Dim swModelDoc2 As SldWorks.ModelDoc2 Dim swPartDoc As SldWorks.PartDoc Set swApp = Application.SldWorks Set swModelDoc2 = swApp.ActiveDoc Set swPartDoc = swModelDoc2 ' 選択されている平面を取得(選択されていない場合は終了) Dim swSelectionMgr As SldWorks.SelectionMgr Dim vntSelObject As Variant Dim swFeature As SldWorks.Feature Set swSelectionMgr = swModelDoc2.SelectionManager If swSelectionMgr.GetSelectedObjectCount2(-1) <> 1 Then MsgBox ("ミラー平面を選択してマクロを実行してください。" & vbCrLf & "マクロを終了します。") End End If If swSelectionMgr.GetSelectedObjectType3(1, -1) <> swSelectType_e.swSelDATUMPLANES Then MsgBox ("ミラー平面を選択してマクロを実行してください。" & vbCrLf & "マクロを終了します。") End End If Set vntSelObject = swSelectionMgr.GetSelectedObject6(1, -1) Set swFeature = vntSelObject ' コンフィギュレーション「L」の存在確認 Dim vntConfigurationNames As Variant Dim blnConfigurationExists As Boolean Dim swConfiguration As SldWorks.Configuration vntConfigurationNames = swModelDoc2.GetConfigurationNames blnConfigurationExists = False For i = 0 To UBound(vntConfigurationNames) If vntConfigurationNames(i) = "L" Then blnConfigurationExists = True Exit For End If Next If blnConfigurationExists = True Then MsgBox ("既にコンフィギュレーション「L」が存在します。" & vbCrLf & "マクロを終了します。") End End If ' コンフィギュレーション「L」作成 Set swConfiguration = swModelDoc2.AddConfiguration3("L", "", "", 0) swModelDoc2.ClearSelection2 True ' ミラー平面の選択 Call swFeature.Select2(True, 2) 'ボディの選択 Dim vntBodies As Variant Dim swBody2 As SldWorks.Body2 vntBodies = swPartDoc.GetBodies2(SwConst.swSolidBody, True) For i = 0 To UBound(vntBodies) Set swBody2 = vntBodies(i) Call swBody2.Select(True, 256) Next ' ミラーフィーチャ作成 Dim myFeature As Object Set myFeature = swModelDoc2.FeatureManager.InsertMirrorFeature(True, False, False, False) ' 元のボディを非表示 For i = 0 To UBound(vntBodies) Set swBody2 = vntBodies(i) Call swBody2.HideBody(True) Next End Sub
|
|
|
|
|
psychic
Sr. メンバー
オフライン
投稿: 59
I'm a llama!
|
|
Re:L/R部品のコンフィギュレーション
« 返信 #4 投稿日: 2011/10/25 - 21:45:44 » |
|
Makoronさま ありがとうございます^^ 早速試してみました ばっちりです! ほんとにありがとうございました!
ただいつも疑問に思うのですが、よくここでつくってもたったコードを そのままうっても動かないことが多く たとえば Dim swApp As SldWorks.SldWorks などはすべて Dim swApp As Object と書き換えると動くのですが (VB6で作成時も)
まあパターンわかってきたのはいいんですが 気になります・・
|
|
|
|
Makoron
カタマリの王様!?
オフライン
投稿: 1277
SW2011SP5.0
|
|
Re:L/R部品のコンフィギュレーション
« 返信 #5 投稿日: 2011/10/26 - 09:16:49 » |
|
引用:ただいつも疑問に思うのですが、よくここでつくってもたったコードを そのままうっても動かないことが多く たとえば Dim swApp As SldWorks.SldWorks などはすべて Dim swApp As Object と書き換えると動くのですが (VB6で作成時も)
まあパターンわかってきたのはいいんですが 気になります・・ |
参照設定に「SldWorks 20** Type Library 」(**はバージョンの数字)が指定(チェック)されているでしょうか? マクロなら、メニューの「ツール」→「参照設定」で確認が出来ます。 VB6なら、メニューの「プロジェクト」」→「参照設定」で確認が出来ます。
ちなみに、参照設定を設定して Dim swApp As SldWorks.SldWorks と変数を定義しておくと swApp. とピリオドまで入力したときに、メソッドやプロパティなどの一覧が表示され選択することができ、入力が簡単になります。
プログラムの動作や内部的な処理がどう変わってくるかは理解できていないのですが、 入力作業を簡単にしたいためにこの様な変数定義をしています。
|
|
|
|