Option Explicit ' COPYRIGHT DASSAULT SYSTEMES 2001 Dim Language as String Language="VBScript" ' *********************************************************************** ' Purpose: This macro: ' 1 - Checks whether the active document is a CATPart ' 2 - Retrieves the Relations collection. This is required ' to create formulas ' 3 - Retrieves the Parameters collection. This is required ' to create parameters ' 4 - Creates parameters ' 5 - Creates formulas ' 6 - Displays the list of relations ' 7 - Displays the list of parameters ' Notes: a) The parameter list which is displayed contains ' all the document parameters (i.e. the user parameters ' and the others as well) ' b) If you replay the macro - you create new parameters ' and formulas, but parameter names are not those specified. ' ' Author: Carole ROULLE, Pierre Grignon ' Languages: VBScript ' Locales: English (United States) ' CATIA Level: V5R6 ' revision V5R13 ' *********************************************************************** Sub CATMain() ' Set the CATIA popup file alerts to False ' It prevents to stop the macro at each alert during its execution CATIA.DisplayFileAlerts = False ' Retrieve your active document - CATIA is your application ' You get the active document by using the ActiveDocument property ' on your application object ' ----------------------------------------------------------- ' 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 Part document Dim sFilePath sFilePath = CATIA.FileSystem.ConcatenatePaths(sDocPath, _ "online\CAAScdKniUseCases\samples\CAAKniSamplePartR13.CATPart") Dim oDoc As Document set oDoc = CATIA.Documents.Open(sFilePath) ' Set the CATIA popup file alerts to False ' It prevents to stop the macro at each alert during its execution CATIA.DisplayFileAlerts = False ' Retrieve your active document - CATIA is your application ' You get the active document by using the ActiveDocument property ' on your application object Dim oActiveDoc As Document Set oActiveDoc = CATIA.ActiveDocument ' Check whether the document is a CATPart If (InStr(oActiveDoc.Name,".CATPart")) <> 0 Then ' Retrieve the collection object which contains ' all the document relations. ' The statements below are only valid when the active ' document is a CATPart Dim oRelations As Relations Set oRelations = oActiveDoc.Part.Relations ' Retrieve the collection object which contains ' all the document parameters Dim oParameters As Parameters Set oParameters = oActiveDoc.Part.Parameters ' Remove the SphereRadius parameter ' if it exists in the Parameters collection Dim i As Integer For i = 1 to oParameters.Count if (oParameters.Item(i).Name = "SphereRadius") then oParameters.Remove "SphereRadius" end if Next ' Create the ProjectId parameter ' This parameter is a string type parameter ' Its initial value is CATLifKnowledgeAdvisor Dim oString1 As Parameter Set oString1 = oParameters.CreateString("ProjectId","CATLifKnowledgeAdvisor") ' Create the ProjectKey parameter ' This parameter is a string type parameter ' Its initial value is a blank string Dim oString2 As Parameter Set oString2 = oParameters.CreateString("ProjectKey","") ' Create an integer type parameter ' Its name is Stringlength - its initial value is 0 Dim oStringLength As Parameter Set oStringLength = oParameters.CreateInteger("StringLength",0) ' Create a Length type parameter ' Its initial name is blank ' Its initial value is 0 ' Note that units are specified in internal units ' i.e the units used by the geometric modeler (mm for Length) Dim oSphereRadius As Parameter Set oSphereRadius = oParameters.CreateDimension("","LENGTH", 0) ' Rename the created parameter and assigns a value to it ' Note: this cannot be done if a parameter ' already named SphereRadius exists in the document ' This is why a search for a SphereRadius parameter has ' been performed above. oSphereRadius.Rename "SphereRadius" oSphereRadius.Value = 50 ' Display the minum tolerance for "SphereRadius" msgbox "Min Tolerance for the LENGTH parameter " & oSphereRadius.MinimumTolerance ' Create a Volume type parameter ' Its name is SphereVolume ' Its initial value is 0 m3 Dim oSphereVol As Parameter Set oSphereVol = oParameters.CreateDimension("SphereVolume","VOLUME",0) ' Create a formula which specifies that the ProjectKey parameter value ' equals the three first characters of ProjectId ' To do so we use the CreateFormula method of the "Relations" collection ' object - the constrained parameter is passed as the third argument of the ' method - The formula expression is passed as the fourth argument. ' Note that the Extract function is provided by the Knowledge Advisor ' string function dictionary Dim oFormula1 As Formula Set oFormula1 = oRelations.CreateFormula("Formula1", "", oString2,_ "ProjectId.Extract(0,3)" ) ' Create a formula which also applies to the ProjectKey parameter ' This formula will be created as inactive Dim oFormula2 As Formula Set oFormula2 = oRelations.CreateFormula("Formula2", "", oString2,_ "ProjectId.Extract(4,3)" ) ' Create a formula which applies to the StringLength parameter ' The formula expression passed as the fourth argument ' uses the Length function which is provided with the string functions of the ' Knowledge Advisor dictionary Dim oFormula3 As Formula Set oFormula3 = oRelations.CreateFormula("Formula3", "", oStringLength,_ "ProjectId.Length()" ) ' Create a formula which applies to the SphereVolume parameter ' It just calculates the volume from the radius Dim oFormula4 As Formula Set oFormula4 = oRelations.CreateFormula("Formula4", "", oSphereVol,_ "(4/3)*PI*SphereRadius**3") ' Display the list of relations ' The formula names and expressions are displayed in a message box Dim ostrRel As String ostrRel = "Here is the list of relations" & vbCrLf For i = 1 to oRelations.Count ostrRel = ostrRel & vbCrLf & oRelations.Item(i).Name &_ " " & oRelations.Item(i).Value Next MsgBox ostrRel Dim ostrPar As String For i = 1 to oParameters.Count ostrPar = ostrPar & vbCrLf & oParameters.Item(i).Name Next MsgBox ostrPar ' Update the document CATIA.ActiveDocument.Part.Update else MsgBox "The active document must be a CATPart" End If End Sub