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

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









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

仕事のカタマリ 掲示板  |  SolidWorks一般  |  SolidWorksのカスタマイズ (議長: webmaster)  |  トピック: アセンブリ構成部品の回転 前のトピック 次のトピック
ページ: [1] Page Bottom 返信 返信のお知らせ Print 
   著者  トピック: アセンブリ構成部品の回転  (閲覧数 4076 回)
jimnii
新人さん
*

オフライン

投稿: 1



I'm a llama!

プロファイルを見る メールアドレス
アセンブリ構成部品の回転
« 投稿日: 2011/08/29 - 12:34:49 »
引用して返信

初投稿させていただきます。

現在,InputBoxなどを用いて画面上に角度入力BOXを表示させ,入力した角度でアセンブリ構成部品をZ軸を基準に回転するようなものを作成しているのですがうまくいきません。。。

まだ,始めたばかりのため理解できてないことも多くあるのですが,よろしくお願いいたします。

議長に報告する   記録済み
Makoron
カタマリの王様!?
*****

オフライン

投稿: 1277



SW2011SP5.0

プロファイルを見る
Re:アセンブリ構成部品の回転
« 返信 #1 投稿日: 2011/10/25 - 11:57:13 »
引用して返信

jimniiさん、はじめまして。

かなり時間がたっているので解決されているかもしれませんが、
サンプルを作ってみました。
ちなみに、サンプルはAPIマニュアルの「Rotate Assembly Component on Axis Example (VB)
」を参考にしています。

Code:
Option Explicit

Const RAD_PAR_DEG        As Double = 3.14159 / 180#

Sub main()
    Dim swApp As SldWorks.SldWorks
    Dim swModelDoc2 As SldWorks.ModelDoc2
    Dim swAssemblyDoc As SldWorks.AssemblyDoc
    Set swApp = Application.SldWorks
    Set swModelDoc2 = swApp.ActiveDoc
    Set swAssemblyDoc = swModelDoc2
   
    ' 選択されている構成部品を取得
    Dim swSelectionMgr As SldWorks.SelectionMgr
    Dim vntSelObject As Variant
    Dim swComponent2 As SldWorks.Component2
    Set swSelectionMgr = swModelDoc2.SelectionManager
    If swSelectionMgr.GetSelectedObjectCount2(-1) <> 1 Then
        MsgBox ("対象となる構成部品をフィーチャツリーから選択してマクロを実行してください。" & vbCrLf & "マクロを終了します。")
        End
    End If
    If swSelectionMgr.GetSelectedObjectType3(1, -1) <> swSelectType_e.swSelCOMPONENTS Then
        MsgBox ("対象となる構成部品をフィーチャツリーから選択してマクロを実行してください。" & vbCrLf & "マクロを終了します。")
        End
    End If
    Set vntSelObject = swSelectionMgr.GetSelectedObject6(1, -1)
    Set swComponent2 = vntSelObject

    ' 回転角度のユーザー入力
    Dim strImput As String
    Dim dblAngle As Double
    strImput = InputBox("構成部品のZ軸回転方向を入力", "角度の入力")
    dblAngle = CDbl(strImput)

    ' 構成部品の回転パラメータを作成
    Dim swMathUtil As SldWorks.MathUtility
    Dim dblPts(2) As Double
    Dim vntData As Variant
    Dim swOriginPt As SldWorks.MathPoint
    Dim swZAxis As SldWorks.MathVector
    Dim swXform As SldWorks.MathTransform
    Set swMathUtil = swApp.GetMathUtility
    dblPts(0) = 0#
    dblPts(1) = 0#
    dblPts(2) = 0#
    vntData = dblPts
    Set swOriginPt = swMathUtil.CreatePoint(vntData)
    dblPts(0) = 0#
    dblPts(1) = 0#
    dblPts(2) = 1#
    vntData = dblPts
    Set swZAxis = swMathUtil.CreateVector(vntData)
    Set swXform = swMathUtil.CreateTransformRotateAxis(swOriginPt, swZAxis, dblAngle * RAD_PAR_DEG)

    ' 構成部品を回転
    Dim swDragOp As SldWorks.DragOperator
    Set swDragOp = swAssemblyDoc.GetDragOperator
    Call swDragOp.AddComponent(swComponent2, False)
    swDragOp.CollisionDetectionEnabled = False
    swDragOp.DynamicClearanceEnabled = False
    swDragOp.TransformType = 1
    swDragOp.DragMode = 2
    Call swDragOp.BeginDrag
    Call swDragOp.Drag(swXform)
    Call swDragOp.EndDrag
End Sub

議長に報告する   記録済み
ページ: [1] Page Top 返信 返信のお知らせ Print 
仕事のカタマリ 掲示板  |  SolidWorks一般  |  SolidWorksのカスタマイズ (議長: webmaster)  |  トピック: アセンブリ構成部品の回転 前のトピック 次のトピック
ジャンプします: