| |
| E3.view , eine App
|
Autor
|
Thema: Skript GetSchemaLocation von einer Kabelader (363 / mal gelesen)
|
Ex-Mitglied
|
erstellt am: 25. Apr. 2023 08:41 <-- editieren / zitieren -->
Hallo Zusammen Ich habe wieder mal ein kleines Problem. Vielleicht könnt ihr mir sagen wo ich auf dem Schlauch stehe. Ich versuche die Schemaposition einer gerade neu abgelegten Ader zu erfassen. Wenn ich zwei Adern gleichzeitig ablege erhalte ich die Information, für jede Ader, über die Variable grid. Also alles so, wie es sein soll. Lege ich aber nur eine Ader ab bleibt die Variable leer. Ich weiss echt nicht mehr weiter, vermutlich mache ich einen Denkfehler Code:
For i = Job.GetLastmodifiedItems (modcoreids, 22) To 1 Step -1 Dev.SetId modcoreids(i) If Dev.IsCable <> 1 Then Exit For Sym.Setid modcoreids(i) Sym.GetSchemaLocation x, y, grid, col
------------------ Dieser Eintrag wurde mit glücklichen Elektronen aus 100% freier Haltung geschrieben |
K0NFUZIUS Moderator
Beiträge: 271 Registriert: 06.02.2006
|
erstellt am: 25. Apr. 2023 10:12 <-- editieren / zitieren --> Unities abgeben:
|
Ex-Mitglied
|
erstellt am: 25. Apr. 2023 10:42 <-- editieren / zitieren -->
Guten Morgen Jörg Der Benutzer zieht die Kabel aus der Bauteildatenbank ins Projekt. Über den Trigger wird dann das Script angesprochen welches versucht das Kabel richtig (=Anlage+Ort-WBlatt.Pfad) zu benennen. Hast du das gemeint? Gruss und Dank Sevy ------------------ Dieser Eintrag wurde mit glücklichen Elektronen aus 100% freier Haltung geschrieben |
K0NFUZIUS Moderator
Beiträge: 271 Registriert: 06.02.2006
|
erstellt am: 25. Apr. 2023 11:09 <-- editieren / zitieren --> Unities abgeben:
|
Ex-Mitglied
|
erstellt am: 25. Apr. 2023 12:27 <-- editieren / zitieren -->
Der Trigger ist "AfterWireConnected" was eigentlich gut funktioniert hat. Kann der Trigger ein Einfluss auf die Funktion GetSchemaLocation haben? Was bisher nicht sauber funktioniert ist das ich die Strukturinformationen aus dem angeschlossenen Bauteil abgreifen muss. Mir wäre es lieber wenn ich festellen könnte in welcher Struktur das Bauteil grafisch liegt. Also in welchem Feldrahmen. Hier mal den Code, soweit ich gekommen bin:
Code:
For i = 1 To Job.GetLastmodifiedItems (modcoreids, 22) Dev.SetId modcoreids(1) If Dev.IsCable <> 1 Then Exit For Sym.Setid modcoreids(i) Sht.SetId (Sym.GetId) Sym.GetSchemaLocation x, y, grid, col For t = 1 To Dev.GetAllCoreIds(coresids) If y > 100 Then n = 2: If y < 100 Then n = 1 msgbox grid & vblf & y & vblf & n Core.SetId(coresids(t)) pinid = Core.GetEndPinId(n) Device.SetId(pinid) If newAss = "" Then newAss = Device.GetAssignment If newloc = "" Then newloc = Device.GetLocation Next newName = Job.GetDeviceNameSeparator & Dev.GetComponentAttributeValue("DeviceLetterCode") & Sht.GetName & "." & col RenCab = False If Dev.GetName <> newName And newName <> "" Then If Msgbox("Möchtest du das Kabel " & Dev.GetAssignment & Dev.GetLocation & Dev.GetName & " in " & newAss & newloc & newName & " umbenennen?", vbyesno) = vbyes Then Dev.SetCompleteName newName, newAss, newLoc End if End If Exit For Next
------------------ Dieser Eintrag wurde mit glücklichen Elektronen aus 100% freier Haltung geschrieben |
Ex-Mitglied
|
erstellt am: 26. Apr. 2023 07:46 <-- editieren / zitieren -->
Guten Morgen allerseits Das Problem hat sich heute Morgen von selber gelöst. Ich nehme mal an der Neustart des Rechners über Nacht war die Lösung. Jedenfalls funktioniert der Skript nun wie gewünscht, auch wenn nur eine Ader abgesetzt wird. Besten Dank für eure Hilfe, Gruss Sevy ------------------ Dieser Eintrag wurde mit glücklichen Elektronen aus 100% freier Haltung geschrieben |
K0NFUZIUS Moderator
Beiträge: 271 Registriert: 06.02.2006
|
erstellt am: 26. Apr. 2023 08:14 <-- editieren / zitieren --> Unities abgeben:
Hi Sevy, ich glaube da stimmt trotzdem was nicht wenn man mehr als eine Ader hat.
- Drag&Drop des Kabels auf die Verbindung -> kein Draht im Trigger
- Drag&Drop zwei Adern markiert auf die Verbindung -> es wird nur einer Ader aufgelegt (u.U. Ok)
- "Adern einfügen" über Kontextmenübefehle / zwei Adern markiert auf die Verbindung -> OK
Sieht so aus, dass das Einfügen über die Kontextmenübefehle für den Trigger am besten funktionieren. Gruß Jörg Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 26. Apr. 2023 11:19 <-- editieren / zitieren -->
Hallo Jörg Was meinst du mit "kein Draht im Trigger"? Bei mir wird via TriggerManagement auf das Ereignis "AfterWireConnected" ein VBScript aufgerufen. Der holt sich dann die zuletzt geänderten Drähte. Arbeitest du auch so oder kann man den Trigger noch anders verarbeiten? Soweit klappt das alles. Gestern hat mir jedoch die Funktion GetSchemaLocation auf der erst übergebenen Ader keine Informationen zurückgegeben. Heute scheint das zu funktionieren. Leider ist das alles etwas undurchsichtig da man zur Laufzeit nicht in die Variablen schauen kann. Darum arbeitet ich normalerweise lieber in VBA. Oder habt ihr eine bessere Möglichkeit die Programme zu debuggen? Gibt es eigentlich eine Möglichkeit herauszufinden wo das Symbol für die Kabeldefinition auf der Verbindung liegt? Gruss und Dank Sevy ------------------ Dieser Eintrag wurde mit glücklichen Elektronen aus 100% freier Haltung geschrieben |