Option Explicit ' COPYRIGHT DASSAULT SYSTEMES 2005 ' ***************************************************************************** ' Purpose: This sample illustrats the use of IDL interfaces ' CATIAPspGroup, CATIAPspGroupable and CATIAPspLogicalLine ' ' Asumption : Looks for document CAAPsp3DEduIn.CATProduct. ' ' Languages: VBScript ' Locales: English ' CATIA Level: V5R15 ' ***************************************************************************** '--- strMessage_g is a global variable visible to all private Sub/Function Dim strMessage_g As String Sub CATMain() ' ------------------------------------------------------------------------- ' Optional: allows to find the sample wherever it's installed Dim sDocPath As String Dim sDocFullPath As String sDocPath=CATIA.SystemService.Environ("CATDocView") If (Not CATIA.FileSystem.FolderExists(sDocPath)) Then Err.Raise 9999,sDocPath,"No Doc Path Defined" End If ' ---------------------------------------------------------------- ' Open the Distributive system document Dim objPspDoc As Document sDocFullPath = CATIA.FileSystem.ConcatenatePaths(sDocPath, _ "online\CAAScdPspUseCases\samples\CAAPsp3DEduIn.CATProduct" ) 'MsgBox strMessage_g Set objPspDoc = CATIA.Documents.Open(sDocFullPath) strMessage_g = _ "----------------------------------------------------------" & vbCr strMessage_g = strMessage_g & _ "Output traces from CAAPspLogicalLine.CATScript" & vbCrLf Dim objPrdRoot As Product Dim objPspWorkbench As PspWorkbench ' Find the top node of the Distributive System object tree - . If ( Not ( objPspDoc Is Nothing ) ) Then Set objPrdRoot = objPspDoc.Product If ( Not ( objPrdRoot Is Nothing ) ) Then Set objPspWorkbench = objPrdRoot.GetTechnologicalObject ("PspWorkbench") End If End If Dim objPspApplication As PspApplication Dim objPspAppFactory As PspAppFactory Dim objLLogLines As PspListOfObjects Dim objPspGroup As PspGroup Dim objPspID As PspID Dim objPspLogLine As PspLogicalLine Dim ePspIDLDomainID As CatPspIDLDomainID Dim intIdx As Integer Dim intNbLogLines As Integer ePspIDLDomainID = catPspIDLCATPIP '----------------------------------------------------------------------- ' Get PspWorkBench, PspApplication '----------------------------------------------------------------------- If ( objPspWorkbench Is Nothing ) Then strMessage_g = strMessage_g & "Unable to get PspWorkbench" & vbCr Else strMessage_g = strMessage_g & "Success in getting PspWorkbench" & vbCr End If If ( Not ( objPspWorkbench Is Nothing ) ) Then Set objPspApplication = objPspWorkbench.GetApplication(catPspIDLCATPiping) If ( objPspApplication Is Nothing ) Then strMessage_g = strMessage_g & "Unable to get objPspApplication" & vbCr Else strMessage_g = strMessage_g & "Success in getthing objPspApplication" & vbCr objPspApplication.Initialization() End If End If '--- If ( Not ( objPspWorkbench Is Nothing )... '----------------------------------------------------------------------- ' Get a list of logical lines instances, then get PspGroup handle ' to the first logical line instance obtained '----------------------------------------------------------------------- If ( Not ( objPspWorkbench Is Nothing ) And _ Not ( objPspApplication Is Nothing ) ) Then Set objPspAppFactory = objPspWorkbench.GetInterface("CATIAPspAppFactory", _ objPspApplication ) If ( Not ( objPspAppFactory Is Nothing ) ) Then Set objLLogLines = objPspAppFactory.ListLogicalLines (objPrdRoot) If ( Not ( objLLogLines Is Nothing ) ) Then intNbLogLines = objLLogLines.Count strMessage_g = strMessage_g & _ "Number of Logical Lines=" & intNbLogLines & vbCr If ( intNbLogLines > 0 ) Then Set objPspGroup = objLLogLines.Item(1,"CATIAPspGroup") Set objPspLogLine = objLLogLines.Item(1,"CATIAPspLogicalLine") Set objPspID = objLLogLines.Item(1,"CATIAPspID") If ( Not (objPspID Is Nothing) ) Then strMessage_g = strMessage_g & "Logical line object ID =" & objPspID.GetID & vbCr End If End if End If End If End If '--- If ( Not ( objPspWorkbench Is Nothing ) and objPspApplication '----------------------------------------------------------------------- ' List members (CATIAPspGroup) '----------------------------------------------------------------------- Dim objLMembers As PspListOfObjects Dim objPspGroupable As PspGroupable Dim objPspGroupableRem As PspGroupable Dim objPspIDMember As PspID If ( Not ( objPspGroup Is Nothing )) Then Dim objLCntrs As PspListOfObjects Set objLMembers = objPspGroup.Members If ( Not ( objLMembers Is Nothing ) ) Then strMessage_g = strMessage_g & _ "Number of Members= " & objLMembers.Count & vbCr For intIdx = 1 To objLMembers.Count Set objPspGroupable = objLMembers.Item (intIdx, "CATIAPspGroupable") Set objPspIDMember = objLMembers.Item (intIdx, "CATIAPspID") If ( Not (objPspIDMember Is Nothing) ) Then strMessage_g = strMessage_g & "Member ID =" & objPspIDMember.GetID & vbCr End If Next '----------------------------------------- ' Query PspGroupable methods '----------------------------------------- If ( Not ( objPspGroupable Is Nothing ) ) Then QueryGroupable objPspGroupable '------------------------------------- ' Remove member '------------------------------------- If ( Not ( objPspGroupable Is Nothing ) ) Then strMessage_g = strMessage_g & "Removing member= " & _ objPspIDMember.GetID & vbCr objPspGroup.RemoveMember objPspGroupable '------------------------------------- ' Add member '------------------------------------- strMessage_g = strMessage_g & _ "Adding member= " & objPspIDMember.GetID & vbCr objPspGroup.AddMember objPspGroupable End If End If End If End if '----------------------------------------------------------------------- ' GetFromTo information (CATIAPspLogicalLine) '----------------------------------------------------------------------- Dim objLFromMajorMembers As PspListOfObjects Dim objLFromMinorMembers As PspListOfObjects Dim objLToMajorMembers As PspListOfObjects Dim objLToMinorMembers As PspListOfObjects If ( Not ( objPspLogLine Is Nothing )) Then objPspLogLine.GetFromTo objLFromMajorMembers, objLFromMinorMembers, _ objLToMajorMembers, objLToMinorMembers If ( Not ( objLFromMajorMembers Is Nothing )) Then strMessage_g = strMessage_g & _ "Number of From-Major Members is: " & objLFromMajorMembers.Count & vbCr Else strMessage_g = strMessage_g & _ "Number of From-Major Members is 0" & vbCr End If If ( Not ( objLFromMinorMembers Is Nothing )) Then strMessage_g = strMessage_g & _ "Number of From-Minor Members is: " & objLFromMinorMembers.Count & vbCr Else strMessage_g = strMessage_g & _ "Number of From-Minor Members is 0" & vbCr End If If ( Not ( objLToMajorMembers Is Nothing )) Then strMessage_g = strMessage_g & _ "Number of To-Major Members is: " & objLToMajorMembers.Count & vbCr Else strMessage_g = strMessage_g & _ "Number of To-Major Members is 0" & vbCr End If If ( Not ( objLToMinorMembers Is Nothing )) Then strMessage_g = strMessage_g & _ "Number of To-Minor Members is 0" & objLToMinorMembers.Count & vbCr Else strMessage_g = strMessage_g & _ "Number of To-Minor Members is 0" & vbCr End If End If strMessage_g = strMessage_g & _ "--------------------------------------------------------------------" & vbCr MsgBox strMessage_g End Sub ' ----------------------------------------------------------------------------- ' | QueryGroupable methods ' | ' | Input: objPspGroupableArg : PspGroupable object ' | ' | ' ----------------------------------------------------------------------------- Private Sub QueryGroupable (objPspGroupableArg As PspGroupable) Dim objPspGroups As PspGroup If ( Not ( objPspGroupableArg Is Nothing ) ) Then ' --------------------------- ' Get Groups ' --------------------------- Set objPspGroups = objPspGroupableArg.Groups If ( Not ( objPspGroups Is Nothing ) ) Then strMessage_g = strMessage_g & _ "Number of Groups =" & objPspGroups.Count & vbCr End If End If End Sub