オブジェクト取得
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