Random Thoughts |
Always behave like a duck - keep calm and unruffled on the surface but paddle like the devil underneath. -Jacob Braude
|
言語 |
|
|
|
フォーラムニュース: 質問、相談カテゴリに「SolidWorks操作方法」に関するフォーラムを追加しました。(2003/11/27) |
いらっしゃい、 ゲストさん. まずはこちら→ ログイン または 登録. 2024/11/23 - 08:03:19 |
|
|
|
著者
|
トピック: モデルの面にブロック登録を挿入したい (閲覧数 2971 回) |
|
ash
新人さん
オフライン
投稿: 4
I'm a llama!
|
|
モデルの面にブロック登録を挿入したい
« 投稿日: 2011/11/28 - 18:47:11 » |
|
はじめまして。こんにちは。
モデルの面にスケッチを挿入しスケッチ編集状態にしたところに、登録済みのブロック登録を挿入(デザインライブラリより)したいのですが、マクロの記録をしてみたところ、ブロックを挿入するところで「型が一致しません。」とエラーしてしまいます。
モデルにブロックを挿入するサンプルマクロも探してみたのですが、見つかる気配がありませんでした。 データ型さえちゃんとすれば、エラーしないと思うのですがどうしてもわかりません。
環境はSolidWorks2007、WindowsXPx64です。
ご存知の方、どうぞご指導のほどよろしくお願いします。
|
|
|
|
Makoron
カタマリの王様!?
オフライン
投稿: 1277
SW2011SP5.0
|
|
Re:モデルの面にブロック登録を挿入したい
« 返信 #1 投稿日: 2011/11/28 - 19:46:17 » |
|
ashさん、はじめまして。
こんな感じでどうでしょうか? Code: Sub main()
Dim swApp As SldWorks.SldWorks Dim swModelDoc2 As SldWorks.ModelDoc2 Dim swSelectionMgr As SldWorks.SelectionMgr Set swApp = Application.SldWorks Set swModelDoc2 = swApp.ActiveDoc ' 選択確認(簡易的です) Dim swSketchManager As SldWorks.SketchManager Set swSelectionMgr = swModelDoc2.SelectionManager If swSelectionMgr.GetSelectedObjectCount2(-1) <> 1 Then MsgBox "面を選択してください" End End If ' スケッチ開始 Set swSketchManager = swModelDoc2.SketchManager Call swSketchManager.InsertSketch(True) ' ブロックの挿入座標作成 Dim swMathUtility As SldWorks.MathUtility Dim swMathPoint As SldWorks.MathPoint Dim dblXYZ(2) As Double dblXYZ(0) = 0 dblXYZ(1) = 0 dblXYZ(2) = 0 Set swMathUtility = swApp.GetMathUtility Set swMathPoint = swMathUtility.CreatePoint(dblXYZ) ' スケッチにブロックを挿入 Dim swSketchBlockDefinition As SldWorks.SketchBlockDefinition Set swSketchBlockDefinition = swSketchManager.MakeSketchBlockFromFile(swMathPoint, "C:\SampleBlock.SLDBLK", False, 1, 0) ' スケッチ終了 Call swSketchManager.InsertSketch(True)
End Sub
|
|
|
|
|
ash
新人さん
オフライン
投稿: 4
I'm a llama!
|
|
Re:モデルの面にブロック登録を挿入したい
« 返信 #2 投稿日: 2011/11/28 - 20:06:04 » |
|
Makoron 様
はじめまして、こんにちは。ashです。 まずはご返信ありがとうございました。
マクロの記録に無かった部分は、ブロックの挿入座標作成でした。(座標がnoshingだったからエラーしたのかな?) 明日早速会社にて試させていただきます。
選択確認(簡易的です)の部分から、とても親切な説明をしていただいて本当にありがとうございました。
|
|
|
|
ash
新人さん
オフライン
投稿: 4
I'm a llama!
|
|
Re:モデルの面にブロック登録を挿入したい
« 返信 #3 投稿日: 2011/11/29 - 18:42:17 » |
|
お世話になります。
早速今日試したところ Set swSketchBlockDefinition = swSketchManager.MakeSketchBlockFromFile(swMathPoint, "C:\SampleBlock.SLDBLK", False, 1, 0) も、正常に動作しました。本当にありがとうございました。
しかし、自分のやりたいことが最後までできなかったので追加の質問をさせていただきます。
やりたいことは、【スケッチがアクティブな面の中で、選択したエッジが円(Φ10)だったらブロック(円のスケッチ)を挿入し「同心円」の合致をかけて、ブロックの角度をロック】までやりたかったのですが、なかなかうまくいきません。
円のエッジを選択した状態で、Set swSketchBlockDefinition = swSketchManager.MakeSketchBlockFromFile(swMathPoint, "C:\SampleBlock.SLDBLK", False, 1, 0) にて、ブロック挿入すると選択していたエッジが選択状態ではなくなってしまいます。 さらには、再度円のエッジと挿入したブロックを選択したいのですが手段が全くわかりません。
何卒、ご指導のほどよろしくお願いします。
|
|
|
|
ash
新人さん
オフライン
投稿: 4
I'm a llama!
|
|
Re:モデルの面にブロック登録を挿入したい
« 返信 #4 投稿日: 2011/11/29 - 21:55:24 » |
|
お世話になります。
質問内容が延長する形はあまりよろしくないのでしょうか?
新しく質問したほうがよかったら質問し直します。
どうかご返信のほどよろしくお願いします。
|
|
|
|
Makoron
カタマリの王様!?
オフライン
投稿: 1277
SW2011SP5.0
|
|
Re:モデルの面にブロック登録を挿入したい
« 返信 #5 投稿日: 2011/12/06 - 19:48:47 » |
|
ashさん、こんにちは。
引用:質問内容が延長する形はあまりよろしくないのでしょうか? |
特に問題ないと思います。
返信がないので気にされていますか? (「モデルの面にブロック登録を挿入したい2」が削除された様なので・・・)
ここ最近SolidWorksを2009から2011にバージョンアップして、その対応で込み入っており、 この件に対して返信できない状態でした。 (決して無視していたわけではないですよ。)
で、質問の件ですが、サンプル作るまでの時間がないので、簡単に説明だけしてみます。
引用:円のエッジを選択した状態で、Set swSketchBlockDefinition = swSketchManager.MakeSketchBlockFromFile(swMathPoint, "C:\SampleBlock.SLDBLK", False, 1, 0) にて、ブロック挿入すると選択していたエッジが選択状態ではなくなってしまいます。 |
MakeSketchBlockFromFileを実行する前に SelectionManagerで選択されているエッジを取得しておくと、 選択が消えた状態でも、選択していたエッジに対しての処理が行える様になります。
引用:さらには、再度円のエッジと挿入したブロックを選択したいのですが手段が全くわかりません。 |
挿入したブロックを選択するには Set swSketchBlockDefinition = swSketchManager.MakeSketchBlockFromFile(swMathPoint, "C:\SampleBlock.SLDBLK", False, 1, 0) のswSketchBlockDefinition がブロック定義のオブジェクトになるので、 これからブロックインスタンスのオブジェクトを取得したらいいと思います。
言葉だけではわかりにくいと思いますが、APIヘルプで、SelectionManagerとSketchBlockDefinition を調べて そこから探ってみてください。 また、テストをせずに書いているので書いている内容が間違っている場合もあります。
|
|
|
|
|
|
|
|