' Instantiation of a User
Feature Reference "MyUserFeature2"
' MyUserFeature2 is stored in the CATPart "e:\tmp\UserFeatureStartSweep.CATPart"
' It has
' 2 inputs: Center and Surface
' 2 published parameters: Height and Radius
' 1 output: Direction
-------------------------------------------------------------
---------------------------------------------------------------
CATIA.SystemService.Print "Retrieve the current part"
Dim PartDocumentDest As PartDocument
Set PartDocumentDest = CATIA.ActiveDocument
Dim PartDest As Part
Set PartDest = PartDocumentDest.Part
'-------------------------------------------------------------
CATIA.SystemService.Print "Retrieve the factory of the current part"
Dim factory As InstanceFactory
Set factory = PartDest.GetCustomerFactory("InstanceFactory")
'--------------------------------------------------------------
CATIA.SystemService.Print "BeginInstanceFactory"
factory.BeginInstanceFactory "MyUserFeature2",
(1) "e:\tmp\UserFeatureStartSweep.CATPart"
'--------------------------------------------------------------
CATIA.SystemService.Print "Begin Instantiation"
factory.BeginInstantiate (2)
'--------------------------------------------------------------
CATIA.SystemService.Print "Set Inputs"
Dim Center As Object
Set Center = PartDest.FindObjectByName("Point.1")
Dim Surface As Object
Set Surface = PartDest.FindObjectByName("Surface.1")
factory.PutInputData "Point.1", Center
(3)
factory.PutInputData "Surface.1", Surface
'--------------------------------------------------------------
CATIA.SystemService.Print "Modify Parameters"
Dim param1 As Parameter
Set param1 = factory.GetParameter("Height")
(4)
param1.ValuateFromString("40mm")
Dim param2 As Parameter
Set param2 = factory.GetParameter("Radius")
param2.ValuateFromString("30mm")
'--------------------------------------------------------------
CATIA.SystemService.Print "Instantiate"
Dim Instance As ShapeInstance
Set Instance = factory.Instantiate
(5)
'--------------------------------------------------------------
CATIA.SystemService.Print "End of Instantiation"
factory.EndInstantiate (6)
'-------------------------------------------------------------
CATIA.SystemService.Print "Release the reference document"
factory.EndInstanceFactory (7)
'--------------------------------------------------------------
CATIA.SystemService.Print "Update"
PartDest.Update
|
-
Initialization (1):
Use the
BeginInstanceFactory method of the
CATIAInstanceFactory interface. The first argument must be the name
of the User Feature. The second argument is the name of the
document where this reference is stored.
For example: InstanceFactory.BeginInstanceFactory ("name_of_reference","name_of_document")
-
Instantiation: It is the most important part. It
is broken down into 5 other steps that must be executed in the
following order. These steps can be called in a loop to perform
several instantiations:
-
Begin of instantiation: Use the BeginInstantiate
method (2) of the
CATIAInstanceFactory interface to initialize the data of
the reference.
For example: InstanceFactory.BeginInstantiate
|
-
Valuation of inputs: Use the PutInputData method
(3) of the
CATIAInstanceFactory interface to set a value to any input
of the reference.
For example: InstanceFactory.PutInputData "input1",
selected_feature1
|
-
Parameter modification: Retrieve the published
parameter using the GetParameter method
(4) of the
CATIAInstanceFactory interface to modify its value using
the ValuateFromString method of the CATIAParameter
interface.
For example: Set param = InstanceFactory.GetParameter
("published_parameter1")
param.ValuateFromString ("length1")
|
-
Instantiation: Use the Instantiate method
(5) of the
CATIAInstanceFactory interface. It returns the created
instance when it exists.
For example: Set Instance =
InstanceFactory.Instantiate
|
-
End of instantiation: Use the EndInstantiate
method (6) of the
CATIAInstanceFactory interface to indicate that the
instantiation is done.
For example: InstanceFactory.EndInstantiate
|
- Conclusion:
Use the EndInstanceFactory method (7)
of the CATIAInstanceFactory interface to end the
instantiation and clean the InstanceFactory. When performing
several instantiations in a loop, this step must be called only
once at the end of all instantiations.
For example: InstanceFactory.EndInstanceFactory
To get an example, see
Instantiating a User Feature From a VB Macro.
|