仕事のカタマリにようこそ!  [ ログイン | ユーザ登録 ]
フォーラムから検索

機械用3D-CAD SolidWorks非公認のユーザサイトです
 
 
Web katamari.org
仕事のカタマリ
ホーム リンク集 ダウンロード フォーラム(掲示板) FAQ お問い合わせ









フォーラムニュース: 質問、相談カテゴリに「SolidWorks操作方法」に関するフォーラムを追加しました。(2003/11/27)
いらっしゃい、 ゲストさん. まずはこちら→ ログイン または 登録. 2024/11/23 - 08:03:19
ホーム ヘルプ 検索 ログイン 登録

仕事のカタマリ 掲示板  |  SolidWorks一般  |  SolidWorksのカスタマイズ (議長: webmaster)  |  トピック: モデルの面にブロック登録を挿入したい 前のトピック 次のトピック
ページ: [1] Page Bottom 返信 返信のお知らせ Print 
   著者  トピック: モデルの面にブロック登録を挿入したい  (閲覧数 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 を調べて
そこから探ってみてください。
また、テストをせずに書いているので書いている内容が間違っている場合もあります。
議長に報告する   記録済み
ページ: [1] Page Top 返信 返信のお知らせ Print 
仕事のカタマリ 掲示板  |  SolidWorks一般  |  SolidWorksのカスタマイズ (議長: webmaster)  |  トピック: モデルの面にブロック登録を挿入したい 前のトピック 次のトピック
ジャンプします: