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

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









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

仕事のカタマリ 掲示板  |  SolidWorks一般  |  SolidWorksのカスタマイズ (議長: webmaster)  |  トピック: 画面に垂直な軸の選択方法 前のトピック 次のトピック
ページ: [1] Page Bottom 返信 返信のお知らせ Print 
   著者  トピック: 画面に垂直な軸の選択方法  (閲覧数 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!!

プロファイルを見る WWW
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
議長に報告する   記録済み
ページ: [1] Page Top 返信 返信のお知らせ Print 
仕事のカタマリ 掲示板  |  SolidWorks一般  |  SolidWorksのカスタマイズ (議長: webmaster)  |  トピック: 画面に垂直な軸の選択方法 前のトピック 次のトピック
ジャンプします: