Option Explicit
' COPYRIGHT DASSAULT SYSTEMES 2005
' *****************************************************************************
' Purpose: This sample illustrats the use of IDL interfaces
' CATIAPspConnector, CATIAPspConnectable and CATIAPspCntrFlow
' Assumption: Looks for document CAAPspEduIn.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\CAAPspEduIn.CATProduct" )
Set objPspDoc = CATIA.Documents.Open(sDocFullPath)
strMessage_g = _
"--------------------------------------------------------------------" & vbCr
strMessage_g = strMessage_g & _
"Output traces from CAAPspConnectivity.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 objPspPhysical As PspPhysical
Dim objPspPhyID As PspID
Dim objPspCntbl As PspConnectable
Dim ePspIDLDomainID As CatPspIDLDomainID
Dim intIdx 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 PspPhysical object in the Piping domain
'-----------------------------------------------------------------------
If ( Not ( objPspWorkbench Is Nothing ) And _
Not ( objPspApplication Is Nothing ) ) Then
Set objPspAppFactory = objPspWorkbench.GetInterface("CATIAPspAppFactory", _
objPspApplication )
If ( Not ( objPspAppFactory Is Nothing ) ) Then
Dim objLPhysicals As PspListOfObjects
Set objLPhysicals = objPspAppFactory.ListPhysicals ( objPrdRoot , catPspIDLCATPIP)
If ( Not ( objLPhysicals Is Nothing ) And _
( objLPhysicals.Count > 0 ) ) Then
Set objPspPhysical = objLPhysicals.Item( 1, "CATIAPspPhysical" )
End If
End If
End If '--- If ( Not ( objPspWorkbench Is Nothing ) and objPspApplication
'-----------------------------------------------------------------------
' Get objPspCntbl
'-----------------------------------------------------------------------
If ( Not ( objPspWorkbench Is Nothing ) And _
Not ( objPspPhysical Is Nothing ) ) Then
Set objPspPhyID = objPspWorkbench.GetInterface("CATIAPspID", _
objPspPhysical )
Set objPspCntbl = objPspWorkbench.GetInterface("CATIAPspConnectable", _
objPspPhysical )
If ( Not (objPspPhyID Is Nothing) ) Then
strMessage_g = strMessage_g & "Physical object ID =" & objPspPhyID.GetID & vbCr
End If
End If
'-----------------------------------------------------------------------
' Get connected objects to this object
'-----------------------------------------------------------------------
If( Not ( objPspCntbl Is Nothing )) Then
Dim objLClassFilter As CATIAPspListOfBSTRs
Dim objLCntbles As PspListOfObjects
Dim objLCntrsOnThisObj As PspListOfObjects
Dim objLCntrsOnConnected As PspListOfObjects
Dim objAIDCntbl As PspID
Dim objPspCntr As PspConnector
Dim objPspCntrFlow As PspCntrFlow
Set objLClassFilter = Nothing
objPspCntbl.ListConnectables objLClassFilter, objLCntbles, _
objLCntrsOnThisObj, objLCntrsOnConnected
If ( Not ( objLCntbles Is Nothing ) ) Then
strMessage_g = strMessage_g & _
"Number of Connected objects= " & objLCntbles.Count & vbCr
For intIdx = 1 To objLCntbles.Count
Set objAIDCntbl = objLCntbles.Item (intIdx, "CATIAPspID")
If ( Not (objAIDCntbl Is Nothing) ) Then
strMessage_g = strMessage_g & "Connected object ID =" & objAIDCntbl.GetID & vbCr
End If
Next
End If
'-----------------------------------------------------------------------
' Getting connector and flow information
'-----------------------------------------------------------------------
If ( Not ( objLCntrsOnThisObj Is Nothing ) ) Then
strMessage_g = strMessage_g & _
"Number of Connectors used to connect other objects= " & objLCntrsOnThisObj.Count & vbCr
For intIdx = 1 To objLCntrsOnThisObj.Count
Set objPspCntr = objLCntrsOnThisObj.Item (intIdx, "CATIAPspConnector")
Set objPspCntrFlow = objLCntrsOnThisObj.Item (intIdx, "CATIAPspCntrFlow")
'-----------------------------
' Query connector information
If ( Not (objPspCntr Is Nothing) ) Then
QueryConnector objPspCntr
End If
'-----------------------------
' Query Connector flow information
If ( Not (objPspCntrFlow Is Nothing) ) Then
QueryCntrFlow objPspCntrFlow
End If
Next
End If
End if
'-----------------------------------------------------------------------
' Get List of connectors
'-----------------------------------------------------------------------
If( Not ( objPspCntbl Is Nothing )) Then
Dim objLCntrs As PspListOfObjects
Set objLCntrs = objPspCntbl.Connectors
If ( Not ( objLCntrs Is Nothing ) ) Then
strMessage_g = strMessage_g & _
"Number of Connectors= " & objLCntrs.Count & vbCr
End If
End if
'-----------------------------------------------------------------------
' Get List of Valid connector types
'-----------------------------------------------------------------------
If( Not ( objPspCntbl Is Nothing )) Then
Dim objLStrValidCntrTypes As PspListOfBSTRs
Set objLStrValidCntrTypes = objPspCntbl.ValidConnectorTypes
If ( Not ( objLStrValidCntrTypes Is Nothing ) ) Then
strMessage_g = strMessage_g & _
"Number of Valid Connector types= " & objLStrValidCntrTypes.Count & vbCr
End If
End if
strMessage_g = strMessage_g & _
"--------------------------------------------------------------------" & vbCr
MsgBox strMessage_g
End Sub
' -----------------------------------------------------------------------------
' | QueryConnector methods
' |
' | Input: objPspCntrArg : PspConnector object
' |
' |
' -----------------------------------------------------------------------------
Private Sub QueryConnector (objPspCntrArg As PspConnector)
Dim objPspAssocCntbl As PspConnectable
Dim strCntrName As String
Dim objLStrAttrNames As PspListOfBSTRs
If ( Not ( objPspCntrArg Is Nothing ) ) Then
' ---------------------------
' Get Associated connectable
Set objPspAssocCntbl = objPspCntrArg.GetAssociatedConnectable
strCntrName =objPspCntrArg.ConnectorName
strMessage_g = strMessage_g & _
"Connector name = " & strCntrName & vbCr
Set objLStrAttrNames = objPspCntrArg.AttrNames
If ( Not ( objLStrAttrNames Is Nothing ) ) Then
strMessage_g = strMessage_g & _
"Number of connector attributes = " & objLStrAttrNames.Count & vbCr
End If
End If
End Sub
' -----------------------------------------------------------------------------
' | QueryCntrFlow methods
' |
' | Input: objPspCntrFlowArg : PspCntrFlow object
' |
' |
' -----------------------------------------------------------------------------
Private Sub QueryCntrFlow (objPspCntrFlowArg As PspCntrFlow)
Dim eFlowCapability As CatPspIDLFlowCapability
Dim eFlowReality As CatPspIDLFlowReality
If ( Not ( objPspCntrFlowArg Is Nothing ) ) Then
' ---------------------------
' Flow Capability information
eFlowCapability = objPspCntrFlowArg.FlowCapability
Select Case eFlowCapability
Case catPspIDLFlowCapability_Undefined
strMessage_g = strMessage_g & "Flow Capability in undefined" & vbCr
Case catPspIDLFlowCapability_InDirection
strMessage_g = strMessage_g & "Flow Capability is in inward direction" & vbCr
Case catPspIDLFlowCapability_OutDirection
strMessage_g = strMessage_g & "Flow Capability is in outward direction" & vbCr
Case catPspIDLFlowCapability_InOutDirection
strMessage_g = strMessage_g & "Flow Capability is in bi-directional" & vbCr
End Select
' ---------------------------
' Flow Reality information
eFlowReality = objPspCntrFlowArg.FlowReality
Select Case eFlowReality
Case catPspIDLFlowReality_Undefined
strMessage_g = strMessage_g & "Flow in undefined" & vbCr
Case catPspIDLFlowReality_InDirection
strMessage_g = strMessage_g & "Flow is in inward direction" & vbCr
Case catPspIDLFlowReality_OutDirection
strMessage_g = strMessage_g & "Flow is in outward direction" & vbCr
Case catPspIDLFlowReality_InOutDirection
strMessage_g = strMessage_g & "Flow is in bi-directional" & vbCr
End Select
' ---------------------------
' Set Flow Reality information
If ( eFlowReality = catPspIDLFlowReality_Undefined ) Then
eFlowReality = catPspIDLFlowReality_InDirection
objPspCntrFlowArg.FlowReality = eFlowReality
End If
End If
End Sub