Option Explicit ' COPYRIGTH DASSAULT SYSTEMES 2001 ' *********************************************************************** ' Purpose: Creates constraints between assembly Parts using Publications ' Assumtions: Looks for CstOnProduct.CATProduct in the DocView ' Author: ' Languages: VBScript ' Locales: English ' CATIA Level: V5R6 ' *********************************************************************** Sub CATMain() ' ----------------------------------------------------------- ' Optional: allows to find the sample wherever it's installed dim sDocPath As String sDocPath=CATIA.SystemService.Environ("CATDocView") If (Not CATIA.FileSystem.FolderExists(sDocPath)) Then Err.Raise 9999,,"No Doc Path Defined" End If ' ----------------------------------------------------------- ' Open the Product document Dim sFilePath sFilePath = CATIA.FileSystem.ConcatenatePaths(sDocPath, _ "online\CAAScdAsmUseCases\samples\CstOnPublish.CATProduct") Dim oDoc As Document set oDoc = CATIA.Documents.Open(sFilePath) ' ' -------------------------- ' Get the different products ' -------------------------- Dim oRootProduct As Product Set oRootProduct=CATIA.ActiveDocument.Product Dim oPlate As Product Set oPlate = CATIA.ActiveDocument.Product.Products.Item ( "Plate.1" ) Dim oScrew1 As Product Set oScrew1 = CATIA.ActiveDocument.Product.Products.Item ( "Screw.1" ) Dim oScrew2 As Product Set oScrew2 = CATIA.ActiveDocument.Product.Products.Item ( "Screw.2" ) ' -------------------------------------- ' Declare variables to handle publications ' -------------------------------------- Dim oPlatePub As Publication Dim oPlateRef As Reference Dim oScrewPub As Publication Dim oScrewRef As Reference ' -------------------------------------- ' Get the Constraints collection ' -------------------------------------- Dim oConstraints0 As Collection Set oConstraints0 = oRootProduct.Connections ( "CATIAConstraints" ) ' -------------------------------------- ' Create offset constraint between plate ' top face and screws heads bottom faces ' -------------------------------------- set oPlatePub = oPlate.Publications.Item("Top") Set oPlateRef = oPlatePub.Valuation ' ---> Plate\Top Screw1\HeadBottom Set oScrewPub = oScrew1.Publications.Item("HeadBottom") Set oScrewRef = oScrewPub.Valuation Dim oConstraint1 As Constraint Set oConstraint1 = oConstraints0.AddBiEltCst ( catCstTypeDistance, oPlateRef, oScrewRef ) oConstraint1.Dimension.Value = 2.000000 oConstraint1.Orientation = CATCstOrientOpposite ' ---> Plate\Top Screw2\HeadBottom Set oScrewPub = oScrew2.Publications.Item("HeadBottom") Set oScrewRef = oScrewPub.Valuation Dim oConstraint2 As Constraint Set oConstraint2 = oConstraints0.AddBiEltCst ( catCstTypeDistance, oPlateRef, oScrewRef ) oConstraint2.Dimension.Value = 2.000000 oConstraint2.Orientation = CATCstOrientOpposite ' -------------------------------------------- ' Create offset constraint between plate ' holes positioning points and screws axis ' -------------------------------------------- ' ---> Plate\Hole1 Screw1\Axis set oPlatePub = oPlate.Publications.Item("Hole1") Set oPlateRef = oPlatePub.Valuation Set oScrewPub = oScrew1.Publications.Item("Axis") Set oScrewRef = oScrewPub.Valuation Dim oConstraint3 As Constraint Set oConstraint3 = oConstraints0.AddBiEltCst(catCstTypeOn, oPlateRef, oScrewRef ) ' ---> Plate\Hole2 Screw2\Axis set oPlatePub = oPlate.Publications.Item("Hole2") Set oPlateRef = oPlatePub.Valuation Set oScrewPub = oScrew2.Publications.Item("Axis") Set oScrewRef = oScrewPub.Valuation Dim oConstraint4 As Constraint Set oConstraint4 = oConstraints0.AddBiEltCst(catCstTypeOn, oPlateRef, oScrewRef ) ' -------------------------------------- ' Update the Product .. ' -------------------------------------- oRootProduct.Update MsgBox "Click OK to replace the screw by another standard screw ..." ' -------------------------------------- ' Replace the screw by another one: constraints on ' published elements are autoatically reconnected ... ' -------------------------------------- Set oScrew1 = CATIA.ActiveDocument.Product.Products.ReplaceComponent ( _ oScrew1, _ sDocPath & "\online\CAAScdAsmUseCases\samples\NewScrew.CATPart", _ True) ' -------------------------------------- ' Update the Product with the new Parts ' -------------------------------------- oRootProduct.Update End Sub