Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  E3.series
  Skript-Erweiterung Länge von Segmenten

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Skript-Erweiterung Länge von Segmenten (637 mal gelesen)
S.Ch
Mitglied


Sehen Sie sich das Profil von S.Ch an!   Senden Sie eine Private Message an S.Ch  Schreiben Sie einen Gästebucheintrag für S.Ch

Beiträge: 3
Registriert: 18.03.2019

erstellt am: 09. Mrz. 2021 07:04    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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

K0NFUZIUS
Moderator



Sehen Sie sich das Profil von K0NFUZIUS an!   Senden Sie eine Private Message an K0NFUZIUS  Schreiben Sie einen Gästebucheintrag für K0NFUZIUS

Beiträge: 258
Registriert: 06.02.2006

erstellt am: 05. Apr. 2021 12:20    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für S.Ch 10 Unities + Antwort hilfreich

Hallo S.,
entschuldige die späte Antwort.
Ich hatte mir das Script schon mal angeschaut und konnte keinen Fehler feststellen.
Jetzt habe ich mir ein Beispiel Projekt gebaut und habe es durch debuggt und kann Deinen Fehler immer noch nicht nachvollziehen. Das Skript ist soweit schlüssig und ich habe auch den Zweck verstanden.

Kannst Du denn ein E3 Beispiel hochladen (am besten gezippt) das den Fehler zeigt

Liebe Grüße
Jörg

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

S.Ch
Mitglied


Sehen Sie sich das Profil von S.Ch an!   Senden Sie eine Private Message an S.Ch  Schreiben Sie einen Gästebucheintrag für S.Ch

Beiträge: 3
Registriert: 18.03.2019

erstellt am: 13. Apr. 2021 17:41    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Jörg,

Kein Problem - immerhin hat sich jemand gemeldet! 
Wie du siehst, bin ich momentan extrem mit anderen Dingen beschäftigt und komme erst jetzt zum Antworten...

Ja, das ist mir in der Zwischenzeit auch aufgefallen. Das Skript funktioniert richtig - die von mir gewünschte Funktion wurde damals nicht implementiert.
Gibt es eine Möglichkeit für nicht COM-Geschulte User wie mich, die von mir gewünschte Funktion zu ergänzen?

Gruss
Christian

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

K0NFUZIUS
Moderator



Sehen Sie sich das Profil von K0NFUZIUS an!   Senden Sie eine Private Message an K0NFUZIUS  Schreiben Sie einen Gästebucheintrag für K0NFUZIUS

Beiträge: 258
Registriert: 06.02.2006

erstellt am: 14. Apr. 2021 10:01    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für S.Ch 10 Unities + Antwort hilfreich

Hallo Christian,
was ist den Deine "gewünschte Funktion"?
Gruß Jörg

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

S.Ch
Mitglied


Sehen Sie sich das Profil von S.Ch an!   Senden Sie eine Private Message an S.Ch  Schreiben Sie einen Gästebucheintrag für S.Ch

Beiträge: 3
Registriert: 18.03.2019

erstellt am: 19. Apr. 2021 16:14    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


PrintScreen.png

 
Hallo,

Recht simpel; Ich habe ein geschlizter Schlauch (U3) über zwei Segmenten.
Gerne möchte ich, dass die Länge von beiden Segmenten (60mm & 120mm) angezeigt wird... PrintScreen im Anhang.

Momentan zeigt mir die Länge U3 immer nur den Wert des ersten Segments an.
Kannst du mir da weiterhelfen?

Gruss
Christian

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz