Hallo zusammen,
Wir haben seit Jahren ein Skript für das berechnen von Wellrohren und Schläuchen in Kombination von Y-&T-Stücken. Nun ist uns aufgefallen, dass wenn man mehrere Segmente auswählt nicht die maximale Länge ausgerechnet wird, sondern nur die Länge des ersten Segmentes.
Da der Schreiber der Skripts nicht mehr bei uns arbeitet und meine Skript-Kenntnisse Bescheiden sind, bitte ich euch um rat.
Wer kann mir weiterhelfen?
Das Skript sieht momentan so aus:
' Connect to application and declare object variables to call methods later
Set e3app = CreateObject("CT.Application") 'EXTERN
'Set E3app = Application 'INTERN
Set job = E3app.CreateJobObject
Set Dev = Job.CreateDeviceObject
Set dev1 = job.CreateDeviceObject
Set dev2 = job.CreateDeviceObject
Set pin = job.CreatePinObject
Set node = job.CreatePinObject
Set Sym = job.CreateSymbolObject
'Set Sheet = Job.CreateSheetObject
Set Att = Job.CreateAttributeObject
Set netseg = job.CreateNetSegmentObject
Set conline = job.CreateConnectLineObject
Set devlst = Createobject("Scripting.Dictionary")
'Const.
'------------------------------------------------------------------------------------------------------
AttAdditionalLength = "Add_Covering_Length"
AttAdditionalLengthA = "Add_Covering_Length_A"
AttAdditionalLengthB = "Add_Covering_Length_B"
AttClass = "Class"
ConduitClass1 = "Conduit"
ConduitClass2 = "Tube"
AttManufacturingLength = ".LENGTH"
AttConduitlength = "Length"
'Main
'------------------------------------------------------------------------------------------------------
netsegcount = job.GetSelectedNetSegmentIds(netsegids)
'selecteddevcount = job.GetSelectedAllDeviceIds(seldevids)
'e3app.putmessage "TEST"
For f = 1 To netsegcount
netseg.SetId(netsegids(f))
netseglength = netseg.GetManufacturingLength
nodecount = netseg.GetNodeIds(nodeids)
netseg.GetConnectedSymbolIds symids
AdditionalLengthInDev = 0
devlst.RemoveAll
For l=1 To UBound(symids)
Sym.Setid symids(l)
dev1.setid sym.getid
If dev1.IsFormboard Then
dev1originalid = dev1.GetOriginalId
dev1.SetId(dev1originalid)
End If
'e3app.PutMessage dev1.getname
If dev1.HasAttribute(AttAdditionalLength) And Not devlst.Exists(dev1.getid) Then
additionallength = dev1.GetAttributeValue(AttAdditionalLength)
AdditionalLengthInDev = CInt(AdditionalLengthInDev) + CInt(additionallength)
devlst.Add dev1.getid, additionallength
'App.Putmessage "AdditionalLengthInDev : " & AdditionalLengthInDev
'else
'app.putmessage "Dev1.HasAttribute(AttAdditionalLength) : " & Dev1.HasAttribute("Additional covering length")
End If
Next
' Pro NODE
For m = 1 To nodecount
node.SetId(nodeids(m))
nodeid = node.GetId
dev1.SetId(nodeid)
If dev1.IsFormboard Then
dev1originalid = dev1.GetOriginalId
dev1.SetId(dev1originalid)
End If
'count = Dev1.getattributeids (attids)
'App.Putmessage "DevName : " & Dev1.Getname & " Attnumber : " & count
'For t = 1 to count
' Att.setid attids(t)
' App.PutMessage Att.Getinternalname
'Next
If dev1.HasAttribute(AttAdditionalLength) And Not devlst.Exists(dev1.getid) Then
additionallength = dev1.GetAttributeValue(AttAdditionalLength)
AdditionalLengthInDev = CInt(AdditionalLengthInDev) + CInt(additionallength)
devlst.Add dev1.getid
'App.Putmessage "AdditionalLengthInDev : " & AdditionalLengthInDev
'else
'app.putmessage "Dev1.HasAttribute(AttAdditionalLength) : " & Dev1.HasAttribute("Additional covering length")
End If
Next
' Pro Sym
symlength = ""
conduitlength = 0
clcnt = netseg.GetConnectLineIds(clids)
'For j = 1 To clcnt
' rc = conline.SetId(clids(j))
rc = conline.SetId(clids(1))
If rc > 0 Then
symcount = conline.GetProtectionSymbolIds(symids)
For k = 1 To symcount
sym.SetId(symids(k))
dev.SetId(symids(k))
symid = sym.GetId
dev2.SetId(symid)
If dev2.GetComponentAttributeValue(AttClass) = ConduitClass1 Then
If dev2.IsFormboard Then
dev2originalid = dev2.GetOriginalId
dev2.SetId(dev2originalid)
End If
conduitlength = conduitlength + CInt(AdditionalLengthInDev) + CInt(netseglength)
If dev2.HasAttribute(AttConduitlength) Then
dev2.SetAttributeValue AttConduitlength, conduitlength
'e3App.Putmessage Dev2.GetName & " : new conduitlength is -> " & ConduitLength & " netsegid : " & netsegids(f) & " " & rc
Else
dev2.AddAttributeValue AttConduitlength, conduitlength
'e3App.Putmessage Dev2.GetName & " : new conduitlength is -> " & ConduitLength & " netsegid : " & netsegids(f) & " " & rc
End If
End If
If dev2.GetComponentAttributeValue(AttClass) = ConduitClass2 Then
If dev2.IsFormboard Then
dev2originalid = dev2.GetOriginalId
dev2.SetId(dev2originalid)
End If
conduitlength = conduitlength + CInt(AdditionalLengthInDev) + CInt(netseglength)
If dev2.HasAttribute(AttConduitlength) Then
dev2.SetAttributeValue AttConduitlength, conduitlength
'e3App.Putmessage Dev2.GetName & " : new conduitlength is -> " & ConduitLength & " netsegid : " & netsegids(f) & " " & rc
Else
dev2.AddAttributeValue AttConduitlength, conduitlength
'e3App.Putmessage Dev2.GetName & " : new conduitlength is -> " & ConduitLength & " netsegid : " & netsegids(f) & " " & rc
End If
End If
'e3app.PutInfo(0, vbTab & sym.GetType & " " & sym.IsProtection, sym.GetId)
Next
End If
'Next
Next
wscript.quit
Gruss
S.Ch
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP