Random Thoughts |
Rather die living than live to die.
|
言語 |
|
|
|
フォーラムニュース: 質問、相談カテゴリに「SolidWorks操作方法」に関するフォーラムを追加しました。(2003/11/27) |
いらっしゃい、 ゲストさん. まずはこちら→ ログイン または 登録. 2024/11/23 - 07:41:46 |
|
|
|
著者
|
トピック: 画面に垂直な軸の選択方法 (閲覧数 1780 回) |
|
504
新人さん
オフライン
投稿: 7
I'm a llama!
|
|
画面に垂直な軸の選択方法
« 投稿日: 2013/04/30 - 17:20:49 » |
|
いつもお世話になっております。
マクロで図形のEDGEをSelectByID2で選択しようとしています。
画面に垂直な縁が上手く選択できないのですが、視点を回転させる以外に、何か方法はあるのでしょうか?
また、選択ができないのは、"SelectByID2ではxyzで対象の座標を指定しても見えていない物は選択できない"という事なのでしょうか?
以上、よろしくお願いいたします。
|
|
|
|
zarigani
Sr. メンバー
オフライン
投稿: 61
I'm a zarigani
|
|
Re:画面に垂直な軸の選択方法
« 返信 #1 投稿日: 2013/05/01 - 08:14:57 » |
|
フィレットなんかを作る時で、エッジが見えない場合、座標指定で選択しても、フィレットが作れないですよね。その時は、モデルを回転してエッジが見えるようにしてから指定すると正しく作れるようです。ご質問の主旨と会わないかも知れませんが。
|
|
|
|
504
新人さん
オフライン
投稿: 7
I'm a llama!
|
|
Re:画面に垂直な軸の選択方法
« 返信 #2 投稿日: 2013/05/01 - 09:22:50 » |
|
zarigani様
ありがとうございます。
選択したいエッジがたくさんあったので、いちいちそれが見える角度を計算して、何度もモデルを回転させるのが面倒だなと思っていたのですが、適当な角度に回転させてから過去の"モデルを回転させる"というトピックにあるように陰線を選択できるようにすればいいという事が分かりました。
ありがとうございました。
|
|
|
|
hisa
カタマリの王様!?
オフライン
投稿: 507
PANDA-Z!!
|
|
Re:画面に垂直な軸の選択方法
« 返信 #3 投稿日: 2013/05/01 - 13:18:52 » |
|
SelectByID2ですと表示状態で選択の成否が左右されるので、モデル中のエッジから条件を満たすエッジだけ選択させるという方法ではでょうでしょう
下記は、部品の全ソリッドボディのエッジ中点の座標を取得し、条件を満たすエッジだけ選択させるサンプルです。 条件を満たすエッジは選択マークを1にして選択させ、それ以外は選択マークを0にして選択させた後、最後に選択マーク0のものだけ選択解除させています。
ご参考まで
Code:Option Explicit
Sub main()
Dim swApp As SldWorks.SldWorks Dim swModel As SldWorks.ModelDoc2 Dim swSelMgr As SldWorks.SelectionMgr Dim swBody As SldWorks.Body2 Dim swEdge As SldWorks.Edge Dim b As Variant, vBody As Variant Dim e As Variant, vEdge As Variant Dim vPt As Variant Dim i As Long Dim bRet As Boolean
Set swApp = Application.SldWorks Set swModel = swApp.ActiveDoc Set swSelMgr = swModel.SelectionManager swModel.ClearSelection2 True ' ソリッドボディを取得 vBody = swModel.GetBodies2(swSolidBody, True) ' ボディを走査 For Each b In vBody Set swBody = b ' ボディからエッジを取得 vEdge = swBody.GetEdges ' エッジを走査 For Each e In vEdge Set swEdge = e ' エッジを選択マーク0にして選択 bRet = swEdge.SelectByMark(True, 0) ' エッジの中点を選択(ひとつ前のエッジ選択は解除される) swModel.SelectMidpoint ' 選択した中点の座標を取得 vPt = swSelMgr.GetSelectionPoint2(swSelMgr.GetSelectedObjectCount2(-1), -1) ' 中点のX座標が0.075m(75mm)の場合は、選択マークを1にして選択 If vPt(0) = 0.075 Then bRet = swEdge.SelectByMark(True, 1) End If Next Next ' 選択マークが0のものだけ選択解除 ' (DeSelectによって個数が減ってゆくので、選択オブジェクトを後ろから走査する) For i = swSelMgr.GetSelectedObjectCount2(-1) To 1 Step -1 If swSelMgr.GetSelectedObjectMark(i) = 0 Then bRet = swSelMgr.DeSelect(i) End If Next i swModel.GraphicsRedraw2
End Sub |
|
|
|
|
|
|
|
|