Message 1 of 32
Maintaining VBscript in property set code to updated API version - Help
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
Hi all,
I'm in the process of update my code that worked fine with my C3D 2023 and now adding the code to cover 2025 i've received error messages "PLN is null or empty)" :
I've always found that VBscript always execute oddly - Might be an impression or i'm just really missing something here ...
I've adjusted/added lines 14 to 18 :
Dim oCivilApp, oDocument, oPipeNetworks, oPipeNetwork, oPipe, oNetworkObjectID, found, InputHandle, sPipeNetworkName, sAcadVer
Dim fs, logFile, sC3DVer
RESULT = "--"
On Error Resume Next
InputHandle = "[Handle]" ' Replace with the actual handle you want to search for
found = False
' Initialize the AutoCAD application object
Set oApp = GetObject(, "AutoCAD.Application")
sAcadVer = oApp.Version
If InStr(sAcadVer, "25.0") > 0 Then
sC3DVer = "13.7"
ElseIf InStr(sAcadVer, "24.3") > 0 Then
sC3DVer = "13.6"
ElseIf InStr(sAcadVer, "24.2") > 0 Then
sC3DVer = "13.5"
ElseIf InStr(sAcadVer, "24.1") > 0 Then
sC3DVer = "13.4"
ElseIf InStr(sAcadVer, "24.0") > 0 Then
sC3DVer = "13.3"
ElseIf InStr(sAcadVer, "23.1") > 0 Then
sC3DVer = "13.2"
ElseIf InStr(sAcadVer, "23.0") > 0 Then
sC3DVer = "13.1"
End if
Dim interfaceVersion
interfaceVersion = "AeccXUiPipe.AeccPipeApplication." & sC3DVer
Set oCivilApp = oApp.GetInterfaceObject(interfaceversion)
' Access the active document
On Error Resume Next
Set oDocument = oCivilApp.ActiveDocument
' Get the pipe networks collection
Set oPipeNetworks = oDocument.PipeNetworks
' Iterate through pipe networks
For Each oPipeNetwork In oPipeNetworks
If Not IsNull(oPipeNetwork.Pipes) And Not IsEmpty(oPipeNetwork.Pipes) Then
For Each oPipe In oPipeNetwork.Pipes
If oPipe.Handle = InputHandle Then
sPipeNetworkName = oPipeNetwork.Name
found = True
Exit For
End If
Next
End If
If found Then
Exit For
End If
Next
If Not IsNull(oPipeNetwork) Then
Set PLN = oPipeNetwork.ReferencePartList
' Check if part list is valid
If Not IsNull(PLN) And Not IsEmpty(PLN) Then
' Determine result based on part list name
Select Case PLN.Name
Case "AIR COMPRIMÉ EXISTANT"
RESULT = "AIR COMPRIMÉ EXISTANT"
Case "AIR COMPRIMÉ PROPOSÉ"
RESULT = "AIR COMPRIMÉ PROPOSÉ"
Case "AQUEDUC DÉMOLITION", "AQUEDUC DÉSAFFECTER", "AQUEDUC EXISTANT", "AQUEDUC PROPOSE", "AQUEDUC FUTURE"
RESULT = "A"
Case "GAZ EXISTANT"
RESULT = "G"
Case "PLUVIAL EXISTANT", "PLUVIAL PROPOSE", "PLUVIAL DÉMOLITION", "PLUVIAL DÉSAFFECTER", "PLUVIAL FUTURE", "PONCEAU EXISTANT", "PONCEAU PROPOSE"
RESULT = "P"
Case "REFOULEMENT PLUVIAL EXISTANT", "REFOULEMENT PLUVIAL PROPOSE"
RESULT = "RFP"
Case "REFOULEMENT SANITAIRE EXISTANT", "REFOULEMENT SANITAIRE PROPOSE"
RESULT = "RFS"
Case "REFOULEMENT UNITAIRE EXISTANT", "REFOULEMENT UNITAIRE PROPOSE"
RESULT = "RFU"
Case "SANITAIRE EXISTANT", "SANITAIRE PROPOSE", "SANITAIRE DÉMOLITION", "SANITAIRE DÉSAFFECTER", "SANITAIRE FUTURE"
RESULT = "S"
Case "UNITAIRE EXISTANT", "UNITAIRE PROPOSE", "UNITAIRE DÉMOLITION", "UNITAIRE DÉSAFFECTER", "UNITAIRE FUTURE"
RESULT = "U"
Case "MASSIF ÉLECTRIQUE EXISTANT (BÉTON ARMÉ)", "MASSIF ÉLECTRIQUE EXISTANT (BÉTON)", "MASSIF ÉLECTRIQUE PROPOSE (BÉTON ARMÉ)", "MASSIF ÉLECTRIQUE PROPOSÉ (BÉTON)"
RESULT = "MASSIF ÉLEC."
Case "MASSIF FIBRE OPTIQUE EXISTANT (BÉTON ARMÉ)", "MASSIF FIBRE OPTIQUE EXISTANT (BÉTON)", "MASSIF FIBRE OPTIQUE PROPOSE (BÉTON ARMÉ)", "MASSIF FIBRE OPTIQUE PROPOSE (BÉTON)"
RESULT = "MASSIF FIBRE OPTIQUE"
Case "MASSIF TÉLÉPHONIE EXISTANT (BÉTON ARMÉ)", "MASSIF TÉLÉPHONIE EXISTANT (BÉTON)", "MASSIF TÉLÉPHONIE PROPOSE (BÉTON ARMÉ)", "MASSIF TÉLÉPHONIE PROPOSE (BÉTON)"
RESULT = "MASSIF TEL."
Case Else
RESULT = "--"
End Select
'Else
'RESULT = "PLN.Name is not a string. It is a " & TypeName(PLN.Name)
'End If
Else
RESULT = "PLN is null or empty"
End If
Else
RESULT = "Object not retrieved from handle"
End If
Anyone see's something i'm missing out here ?
