オブジェクト取得



SolidWorks

  • マクロから取得
Sub GetApplication()
    Dim objApp As SldWorks.SldWorks
    Set objApp = Application.SldWorks
End Sub
 
  • 外部プログラムから取得
Sub GetApplicationOutSide()
    Dim objApp As SldWorks.SldWorks
    '新規の場合
    Set objApp = CreateObject("SldWorks.Application")
    '既存の場合
    Set objApp = GetObject("", "SldWorks.Application")
End Sub
 


アクティブなドキュメント

  • モデルドキュメント
Sub GetModelDocument()
    Dim objApp As SldWorks.SldWorks
    Dim objModelDoc As SldWorks.ModelDoc2
    Set objApp = Application.SldWorks
    Set objModelDoc = objApp.ActiveDoc
End Sub
 
  • アセンブリドキュメント
Sub GetAssemblyDocument()
    Dim objApp As SldWorks.SldWorks
    Dim objAssyDoc As SldWorks.AssemblyDoc
    Set objApp = Application.SldWorks
    Set objAssyDoc = objApp.ActiveDoc
End Sub
 
  • パーツドキュメント
Sub GetPartDocument()
    Dim objApp As SldWorks.SldWorks
    Dim objPartDoc As SldWorks.PartDoc
    Set objApp = Application.SldWorks
    Set objPartDoc = objApp.ActiveDoc
End Sub
 


モデルビュー

  • アクティブなモデルビュー
Function GetActiveView() As SldWorks.ModelView
    Dim objApp As SldWorks.SldWorks
    Dim objModelDoc As SldWorks.ModelDoc2
    Set objApp = Application.SldWorks
    Set objModelDoc = objApp.ActiveDoc
    Set GetActiveView = objModelDoc.ActiveView
End Function
 


コンフィグレーション

  • アクティブなコンフィグレーション
Function GetActiveConfiguration()  As SldWorks.Configuration
    Dim objApp As SldWorks.SldWorks
    Dim objModelDoc As SldWorks.ModelDoc2
    Dim objConfMgr As SldWorks.ConfigurationManager
    Set objApp = Application.SldWorks
    Set objModelDoc = objApp.ActiveDoc
    Set objConfMgr = objModelDoc.ConfigurationManager
    Set GetActiveConfiguration = objConfMgr.ActiveConfiguration
End Function
 
  • コンフィグレーション一覧
Sub GetConfigurationList()
    Dim objApp As SldWorks.SldWorks
    Dim objModelDoc As SldWorks.ModelDoc2
    Dim objConf As SldWorks.Configuration
    Dim astrNames As Variant
    Dim strName As Variant
    Set objApp = Application.SldWorks
    Set objModelDoc = objApp.ActiveDoc
    astrNames = objModelDoc.GetConfigurationNames
    For Each strName In astrNames
        Set objConf = objModelDoc.GetConfigurationByName(strName)
        '処理 ToDo
    Next
End Sub
 


コンポーネント

  • アクティブなコンポーネント
Function GetActiveComponent() As SldWorks.Component2
    Dim objApp As SldWorks.SldWorks
    Dim objModelDoc As SldWorks.ModelDoc2
    Dim objConfMgr As SldWorks.ConfigurationManager
    Dim objConf As SldWorks.Configuration
    Set objApp = Application.SldWorks
    Set objModelDoc = objApp.ActiveDoc
    Set objConfMgr = objModelDoc.ConfigurationManager
    Set objConf = objConfMgr.ActiveConfiguration
    Set GetActiveComponent = objConf.GetRootComponent3(True)
End Function
 
  • アクティブコンフィグレーションの構成部品一覧
Sub GetActiveConfigurationComponentList()
    Dim objApp As SldWorks.SldWorks
    Dim objModelDoc As SldWorks.ModelDoc2
    Dim objConfMgr As SldWorks.ConfigurationManager
    Dim objConf As SldWorks.Configuration
    Dim objAssy As SldWorks.Component2
    Dim arrayObjComp As Variant
    Dim objCompVariant As Variant
    Dim objComp As SldWorks.Component2
    Set objApp = Application.SldWorks
    Set objModelDoc = objApp.ActiveDoc
    Set objConfMgr = objModelDoc.ConfigurationManager
    Set objConf = objConfMgr.ActiveConfiguration
    Set objAssy = objConf.GetRootComponent3(True)
    arrayObjComp = objAssy.GetChildren
    For Each objCompVariant In arrayObjComp
        Set objComp = objCompVariant
        '処理 ToDo
    Next
End Sub
 
  • アセンブリの構成部品一覧
Sub GetTopAssemblyComponentList()
    Dim objApp As SldWorks.SldWorks
    Dim objAssyDoc As SldWorks.AssemblyDoc
    Dim arrayObjComp As Variant
    Dim objCompVariant As Variant
    Dim objComp As SldWorks.Component2
    Set objApp = Application.SldWorks
    Set objAssyDoc = objApp.ActiveDoc
    '最上位レベルの構成部品のみ
    arrayObjComp = objAssyDoc.GetComponents(True)
    'すべての構成部品
    arrayObjComp = objAssyDoc.GetComponents(False)
    For Each objCompVariant In arrayObjComp
        Set objComp = objCompVariant
        '処理 ToDo
    Next
End Sub
 
  • 編集中のコンポーネント
Function GetEditTargetComponent() As SldWorks.Component2
    Dim objApp As SldWorks.SldWorks
    Dim objModelDoc As SldWorks.ModelDoc2
    Dim objEditinglDoc As SldWorks.ModelDoc2
    Dim objAssyDoc As SldWorks.AssemblyDoc
    Dim objConfMgr As SldWorks.ConfigurationManager
    Dim objConf As SldWorks.Configuration
    Set objApp = Application.SldWorks
    Set objModelDoc = objApp.ActiveDoc
 
    If objModelDoc.GetType() = swDocumentTypes_e.swDocASSEMBLY Then
        Set objAssyDoc = objApp.ActiveDoc
        Set objEditinglDoc = objAssyDoc.GetEditTarget()
        If objModelDoc Is objEditinglDoc Then
            'Editing Top Level Assembly
            Set objConfMgr = objModelDoc.ConfigurationManager
            Set objConf = objConfMgr.ActiveConfiguration
            Set GetEditTargetComponent = objConf.GetRootComponent3(True)
        Else
            'Editing Component
            Set GetEditTargetComponent = objAssyDoc.GetEditTargetComponent()
        End If
    ElseIf objModelDoc.GetType() = swDocumentTypes_e.swDocPART Then
        Set objConfMgr = objModelDoc.ConfigurationManager
        Set objConf = objConfMgr.ActiveConfiguration
        Set GetEditTargetComponent = objConf.GetRootComponent3(True)
    Else
        Set GetEditTargetComponent = Nothing
    End If
End Function
 


ボディ

  • アクティブなボディ(最初に見つかったボディ)
Function GetActiveBody() As SldWorks.Body2
    Dim objComponent As SldWorks.Component2
    Dim arrayBodies As Variant
    Dim varBody As Variant
 
    Set objComponent = GetEditTargetComponent()
    arrayBodies = objComponent.GetBodies3(SwConst.swBodyType_e.swSolidBody, Nothing)
    Set GetActiveBody = Nothing
    For Each varBody In arrayBodies
        Set GetActiveBody = varBody
        Exit For
    Next
End Function
 
'編集中のコンポーネント
Function GetEditTargetComponent() As SldWorks.Component2
    Dim objApp As SldWorks.SldWorks
    Dim objModelDoc As SldWorks.ModelDoc2
    Dim objEditinglDoc As SldWorks.ModelDoc2
    Dim objAssyDoc As SldWorks.AssemblyDoc
    Dim objConfMgr As SldWorks.ConfigurationManager
    Dim objConf As SldWorks.Configuration
    Set objApp = Application.SldWorks
    Set objModelDoc = objApp.ActiveDoc
 
    If objModelDoc.GetType() = swDocumentTypes_e.swDocASSEMBLY Then
        Set objAssyDoc = objApp.ActiveDoc
        Set objEditinglDoc = objAssyDoc.GetEditTarget()
        If objModelDoc Is objEditinglDoc Then
            'Editing Top Level Assembly
            Set objConfMgr = objModelDoc.ConfigurationManager
            Set objConf = objConfMgr.ActiveConfiguration
            Set GetEditTargetComponent = objConf.GetRootComponent3(True)
        Else
            'Editing Component
            Set GetEditTargetComponent = objAssyDoc.GetEditTargetComponent()
        End If
    ElseIf objModelDoc.GetType() = swDocumentTypes_e.swDocPART Then
        Set objConfMgr = objModelDoc.ConfigurationManager
        Set objConf = objConfMgr.ActiveConfiguration
        Set GetEditTargetComponent = objConf.GetRootComponent3(True)
    Else
        Set GetEditTargetComponent = Nothing
    End If
End Function
 


  • 最初に見つかったボディのすべての面
Sub GetFaceList()
    Dim objApp As SldWorks.SldWorks
    Dim objModelDoc As SldWorks.ModelDoc2
    Dim objBody As SldWorks.Body2
    Dim arrayFaces As Variant
    Dim varFace As Variant
    Dim objFace As SldWorks.Face2
 
    Set objApp = Application.SldWorks
    Set objModelDoc = objApp.ActiveDoc
    Set objBody = GetActiveBody()
    arrayFaces = objBody.GetFaces()
    Call objModelDoc.ClearSelection2(True)
    For Each varFace In arrayFaces
        Set objFace = varFace
        '処理 ToDo
    Next
End Sub
 
'アクティブなボディ(最初に見つかったボディ)
Function GetActiveBody() As SldWorks.Body2
    Dim objComponent As SldWorks.Component2
    Dim arrayBodies As Variant
    Dim varBody As Variant
 
    Set objComponent = GetEditTargetComponent()
    arrayBodies = objComponent.GetBodies3(SwConst.swBodyType_e.swSolidBody, Nothing)
    Set GetActiveBody = Nothing
    For Each varBody In arrayBodies
        Set GetActiveBody = varBody
        Exit For
    Next
End Function
 
'編集中のコンポーネント
Function GetEditTargetComponent() As SldWorks.Component2
    Dim objApp As SldWorks.SldWorks
    Dim objModelDoc As SldWorks.ModelDoc2
    Dim objEditinglDoc As SldWorks.ModelDoc2
    Dim objAssyDoc As SldWorks.AssemblyDoc
    Dim objConfMgr As SldWorks.ConfigurationManager
    Dim objConf As SldWorks.Configuration
    Set objApp = Application.SldWorks
    Set objModelDoc = objApp.ActiveDoc
 
    If objModelDoc.GetType() = swDocumentTypes_e.swDocASSEMBLY Then
        Set objAssyDoc = objApp.ActiveDoc
        Set objEditinglDoc = objAssyDoc.GetEditTarget()
        If objModelDoc Is objEditinglDoc Then
            'Editing Top Level Assembly
            Set objConfMgr = objModelDoc.ConfigurationManager
            Set objConf = objConfMgr.ActiveConfiguration
            Set GetEditTargetComponent = objConf.GetRootComponent3(True)
        Else
            'Editing Component
            Set GetEditTargetComponent = objAssyDoc.GetEditTargetComponent()
        End If
    ElseIf objModelDoc.GetType() = swDocumentTypes_e.swDocPART Then
        Set objConfMgr = objModelDoc.ConfigurationManager
        Set objConf = objConfMgr.ActiveConfiguration
        Set GetEditTargetComponent = objConf.GetRootComponent3(True)
    Else
        Set GetEditTargetComponent = Nothing
    End If
End Function
 



コメント

最終更新:2013年12月19日 00:56