言語 |
|
|
|
フォーラムニュース: 質問、相談カテゴリに「SolidWorks操作方法」に関するフォーラムを追加しました。(2003/11/27) |
いらっしゃい、 ゲストさん. まずはこちら→ ログイン または 登録. 2024/11/23 - 07:12:15 |
|
|
|
著者
|
トピック: 穴ウィザードの穴開け方向 (閲覧数 2138 回) |
|
tanuki
新人さん
オフライン
投稿: 2
SW11 Win7(x64)
|
|
穴ウィザードの穴開け方向
« 投稿日: 2013/04/26 - 10:13:18 » |
|
いつもお世話になっています。初投稿です。
過去ログで穴ウィザードの穴位置座標を取得することは できたのですが、穴開け方向(ベクトル?)を取得する方法が わからず困っています。
関数名だけでもいいので何かヒントとなる情報お願いいたします。
|
|
|
|
hisa
カタマリの王様!?
オフライン
投稿: 507
PANDA-Z!!
|
|
Re:穴ウィザードの穴開け方向
« 返信 #1 投稿日: 2013/04/27 - 08:21:54 » |
|
tanukiさん、はじめまして
穴ウィザードの穴あけ方向は、フィーチャーが生成するの穴の円筒面から取得できます。 簡単に説明すると、 1.Feature.GetFacesで生成面取得 2.Face2.GetSurfaceで面からサーフェスを取得 3.サーフェスが円筒(IsCylinder)であればSurface.CylinderParamsでパラメータ取得 4.パラメータから単位ベクトル成分を読み取る といった感じです。
ただし、CylinderParamsで得られるベクトル成分は、穴の抜け方向になっているっぽいので、各成分にマイナスを掛けて反転させる必要があります。 (あらゆる穴タイプで検証したわけでは無いですが・・・) FeatureManager上で穴ウィザードを選択して、以下サンプルコードを実行してみて下さい。
Code:Option Explicit
Sub main()
Dim swApp As SldWorks.SldWorks Dim swModel As SldWorks.ModelDoc2 Dim swSelMgr As SldWorks.SelectionMgr Dim swFeat As SldWorks.Feature Dim swSurface As SldWorks.Surface Dim vFace As Variant, f As Variant, vParam As Variant Set swApp = Application.SldWorks Set swModel = swApp.ActiveDoc Set swSelMgr = swModel.SelectionManager
Set swFeat = swSelMgr.GetSelectedObject6(1, -1) vFace = swFeat.GetFaces For Each f In vFace Set swSurface = f.GetSurface If swSurface.IsCylinder Then vParam = swSurface.CylinderParams Debug.Print -vParam(3) ' 単位ベクトルX成分 Debug.Print -vParam(4) ' 単位ベクトルY成分 Debug.Print -vParam(5) ' 単位ベクトルZ成分 Exit For End If Next
End Sub |
|
|
|
|
tanuki
新人さん
オフライン
投稿: 2
SW11 Win7(x64)
|
|
Re:穴ウィザードの穴開け方向
« 返信 #2 投稿日: 2013/05/07 - 10:38:11 » |
|
GWで返信が遅くなり申し訳ありません。 hisaさんありがとうございます。 うまく取得することができました。
|
|
|
|
|
|
|
|