'COPYRIGHT DASSAULT SYSTEMES 2000-2001
Option Explicit
Dim Language as String
Language="VBSCRIPT"
'*****************************************************************************
' Purpose: This macro creates a simulable mechanism
' in a specific product document
' Assumptions: The product document used is called "ForKinMacro.CATProduct".
' It contains a root product called Product1,
' and two parts called "PartKIN_1" and "PartKIN_2".
' In turn "PartKIN_1.CATPart" and "PartKIN_2.CATPart"
' each contain at least a line called Line.1
' Author:
' Languages: VBScript
' Version: V5R6
' Locales: US English
'*****************************************************************************
Sub CATMain()
'==================================================================
' 1-Prolog
'==================================================================
'------------------------------------------------------------------
' 1.a-Retrieve the root product and the first sub-product
'------------------------------------------------------------------
Dim oRootProduct As AnyObject
Set oRootProduct = CATIA.ActiveDocument.Product
'------------------------------------------------------------------
' 1.b-Retrieve the first sub-product to be used as fixed part
'------------------------------------------------------------------
Dim oProductToFix As Product
Set oProductToFix = oRootProduct.Products.Item(1)
'------------------------------------------------------------------
' 1.c-Switch the entire product to design mode
'------------------------------------------------------------------
oRootProduct.ApplyWorkMode DESIGN_MODE
'------------------------------------------------------------------
' 1.d-Retrieve references to the geometry used for joint creation
'------------------------------------------------------------------
Dim sRefName As String
sRefName = "Product1/PartKIN_1.1/!Line.1"
Dim oReferenceLine1 As Reference
Set oReferenceLine1 = oRootProduct.CreateReferenceFromName ( sRefName )
sRefName = "Product1/PartKIN_2.1/!Line.1"
Dim oReferenceLine2 As Reference
Set oReferenceLine2 = oRootProduct.CreateReferenceFromName ( sRefName )
'==================================================================
' 2-Create a new empty mechanism
'==================================================================
'------------------------------------------------------------------
' 2.a-Retrieve the Mechanisms Collection from the Product
'------------------------------------------------------------------
Dim cTheMechanisms As AnyObject
Set cTheMechanisms = oRootProduct.GetTechnologicalObject("Mechanisms")
'------------------------------------------------------------------
' 2.b-Create a new mechanism
'------------------------------------------------------------------
Dim oNewMechanism As Mechanism
Set oNewMechanism = cTheMechanisms.Add()
'------------------------------------------------------------------
' 2.c-Check the number of mechanisms (expected to be one)
'------------------------------------------------------------------
Dim iNbmech As Integer
iNbmech =cTheMechanisms.Count
'------------------------------------------------------------------
' 2.d-Retrieve the name of the Mechanism
'------------------------------------------------------------------
Dim sMechanismName As String
sMechanismName = oNewMechanism.Name
'==================================================================
' 3-Create the fixed part in this mechanism
'==================================================================
oNewMechanism.FixedPart = oProductToFix
'==================================================================
' 4-Create a cylindrical (actuator) joint in this mechanism
'==================================================================
'------------------------------------------------------------------
' 4.a-Prepare an array of references used for the joint
'------------------------------------------------------------------
Dim aVar1(1)
Set aVar1(0) = oReferenceLine1
Set aVar1(1) = oReferenceLine2
'------------------------------------------------------------------
' 4.b-Create the joint
'------------------------------------------------------------------
Dim oNewJoint as Joint
Set oNewJoint = oNewMechanism.AddJoint("CATKinCylindricalJoint",aVar1)
'------------------------------------------------------------------
' 4.c-Check the number of joints (expected to be one)
'------------------------------------------------------------------
Dim iNbjnt As Integer
iNbjnt = oNewMechanism.NbJoints
'==================================================================
' 5-Create 2 commands on that joint
'==================================================================
Dim oNewCommand1 as MechanismCommand
Dim oNewCommand2 as MechanismCommand
Set oNewCommand1 = oNewMechanism.AddCommand("CATKinLengthCmd",oNewJoint)
Set oNewCommand2 = oNewMechanism.AddCommand("CATKinAngleCmd",oNewJoint)
End Sub