| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | | | | PNY WIRD VON NVIDIA ZUM HÄNDLER DES JAHRES GEWÄHLT, eine Pressemitteilung
|
Autor
|
Thema: iLogic - Problem mit Meldung (1834 / mal gelesen)
|
68ermustang Mitglied
Beiträge: 232 Registriert: 24.02.2009 Autodesk Inventor Professional 2023.2.1 Autodesk AutoCAD Mechanical 2023.1.2 GAIN Collaboration ------------------------------------------ Microsoft Windows 10 Pro Intel Core i7-10700 48 GB Ram NVIDIA Quadro P2000
|
erstellt am: 10. Aug. 2017 10:55 <-- editieren / zitieren --> Unities abgeben:
Hallo Forum, ich verstehe das nicht: '' Naht 1 / 1-lagig nicht möglich
If A_Naht_1_WF = True And A_Naht_1 = "1-lagig" And A_Abstand_N1 <= Kleinster_Nahtkantenabstand Or A_Abstand_N1 >= Nahtgrenze_1 - Kleinster_Nahtkantenabstand And A_Abstand_N1 < Nahtgrenze_2 Then Feature.IsActive("A_Naht_1") = False Feature.IsActive("A_L1_Knips_1_UK") = False Feature.IsActive("A_L1_Knips_1_OK") = False i = MessageBox.Show("Abstand zu Kederstabkante vergrößern oder Wert außerhalb zulässigem Bereich.", "Nahterstellung fehlgeschlagen", MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1) End If '' Naht 1 / 2-lagig UZ nicht möglich
If A_Naht_1_WF = True And A_Naht_1 = "2-lagig_UZ" And A_Abstand_N1 <= Kleinster_Nahtkantenabstand Or A_Abstand_N1 >= Nahtgrenze_1 - Kleinster_Nahtkantenabstand And A_Abstand_N1 < Nahtgrenze_2 Then Feature.IsActive("A_Naht_1") = False Feature.IsActive("A_L1_Knips_1_UK") = False Feature.IsActive("A_L1_Knips_1_OK") = False i = MessageBox.Show("Abstand zu Kederstabkante vergrößern oder Wert außerhalb zulässigem Bereich.", "Nahterstellung fehlgeschlagen", MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1) End If Die Message-Box poppt immer zwei mal auf, obwohl zwei unterschiedliche Bedingungen herrschen, siehe fett gedruckte Begriffe. Wo ist mein Fehler? Kann mir jemand helfen?
Bestes, 68er
[Diese Nachricht wurde von 68ermustang am 10. Aug. 2017 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ruzy5624 Mitglied Konstruktionsleiter / staatl. gepr. Techniker
Beiträge: 280 Registriert: 01.07.2015 Product Design Suite 2018 Ultimate Visual Studio 2017 Windows 10 Pro Intel Xeon E3-1245 v5 @ 3,5GHz Nvidia Quadro M4000 8GB RAM 32GB 2x 24" Monitore FullHD SpaceMouse Pro
|
erstellt am: 10. Aug. 2017 12:33 <-- editieren / zitieren --> Unities abgeben: Nur für 68ermustang
Zitat: Original erstellt von 68ermustang: If A_Naht_1_WF = True And A_Naht_1 = "1-lagig" And A_Abstand_N1 <= Kleinster_Nahtkantenabstand Or A_Abstand_N1 >= Nahtgrenze_1 - Kleinster_Nahtkantenabstand And A_Abstand_N1 < Nahtgrenze_2 Then Feature.IsActive("A_Naht_1") = False Feature.IsActive("A_L1_Knips_1_UK") = False Feature.IsActive("A_L1_Knips_1_OK") = False i = MessageBox.Show("Abstand zu Kederstabkante vergrößern oder Wert außerhalb zulässigem Bereich.", "Nahterstellung fehlgeschlagen", MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1) End IfIf A_Naht_1_WF = True And A_Naht_1 = "2-lagig_UZ" And A_Abstand_N1 <= Kleinster_Nahtkantenabstand Or A_Abstand_N1 >= Nahtgrenze_1 - Kleinster_Nahtkantenabstand And A_Abstand_N1 < Nahtgrenze_2 Then Feature.IsActive("A_Naht_1") = False Feature.IsActive("A_L1_Knips_1_UK") = False Feature.IsActive("A_L1_Knips_1_OK") = False i = MessageBox.Show("Abstand zu Kederstabkante vergrößern oder Wert außerhalb zulässigem Bereich.", "Nahterstellung fehlgeschlagen", MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1) End If
Die Bedingung nach dem "Or" ist die gleiche. Wenn die also oben zutrifft, dann trifft sie auch unten zu.
------------------ Mit Besten Grüßen Ruzy5624 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
68ermustang Mitglied
Beiträge: 232 Registriert: 24.02.2009 Autodesk Inventor Professional 2023.2.1 Autodesk AutoCAD Mechanical 2023.1.2 GAIN Collaboration ------------------------------------------ Microsoft Windows 10 Pro Intel Core i7-10700 48 GB Ram NVIDIA Quadro P2000
|
erstellt am: 10. Aug. 2017 13:01 <-- editieren / zitieren --> Unities abgeben:
Hallo Ruzy5624, diese Or-Bedingung hatte ich auch schon im Verdacht. Ich dachte durch If --> End If und erneutes If --> End If wären die beiden Bausteine (Blöcke) voneinander getrennt und würden separat betrachtet werden. Anscheinend ist dem nicht so. Wie bekomme ich solche Bausteine (Blöcke) voneinander getrennt? Ich bin Anfänger in Sachen iLogic. Ich habe ein Testobjekt, welches bei erfolgreicher Programmierung in der Konstruktion eingesetzt werden soll. Ich bin der einzige, der sich in unserer Firma mit der Thematik beschäftigt und kann keinen Kollegen/in fragen.
Ich Suche derzeit auch --vergebens-- eine Quelle im Netz, in der beispielsweise erklärt wird, was die Unterschiede zwischen And/AndAlso, Or/OrElse sind, wie man Entweder/Oder programmiert, etc. pp - die "einfachen" Dinge eben.
Allerdings werde ich nicht so recht fündig ... Bestes, 68ermustang
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ruzy5624 Mitglied Konstruktionsleiter / staatl. gepr. Techniker
Beiträge: 280 Registriert: 01.07.2015 Product Design Suite 2018 Ultimate Visual Studio 2017 Windows 10 Pro Intel Xeon E3-1245 v5 @ 3,5GHz Nvidia Quadro M4000 8GB RAM 32GB 2x 24" Monitore FullHD SpaceMouse Pro
|
erstellt am: 10. Aug. 2017 19:13 <-- editieren / zitieren --> Unities abgeben: Nur für 68ermustang
Hallo, da hast du auch Recht, die Blöcke werden getrennt voneinander betrachtet. Jedoch läuft das Programm von oben nach unten Zeile für Zeile ab. Das heißt, dass erst der obere If-Block ausgewertet wird und wenn die If-Bedingung "Wahr" wird, wird der Inhalt in dem If-Block abgearbeitet. Danach kommt das Programm Zwangsläufig zum untern If-Block und wertet diesen aus. Wenn auch hier die If-Bedingung "Wahr" wird, dann wird auch hier der Inhalt des If-Blocks durchlaufen. Das bedeutet für dich das erst die Meldung des oberen If-Blocks kommt und wenn du diese wegklickst, dann läuft das Programm weiter in den zweiten If-Block, wo dann wieder die Meldung angezeigt wird. Der Unterschied zwischen And und AndAlso ist recht simpel. Angenommen du hast folgenden Code: If [Bedingung1] And [Bedingung2] Then Dann wird erst die Bedingung1 geprüft und dann die Bedingung2. Wenn dann beide Bedingungen "Wahr" sind, dann wird der Inhalt des If-Blocks abgearbeitet. Hier werden also beide Bedingungen auf jeden Fall geprüft, egal ob die erste Bedingung schon den Wert "Falsch" liefert und somit der If-Block sowieso übersprungen wird. Bei dem Code: If [Bedingung1] AndAlso [Bedingung2] Then Wird Bedingung1 geprüft, wenn diese "Wahr" ist, dann wird Bedingung2 geprüft. Ist diese Ebenfalls "Wahr", dann wird der If-Block abgearbeitet. Sollte hierbei die erste Bedingung den Wert "Falsch" liefern, wird die zweite Bedingung gar nicht mehr geprüft, da der If-Block so oder so nicht abgearbeitet wird. Genauso ist es bei Or oder OrElse. Wenn bei dem OrElse bereits die erste Bedingung dazu führt, dass der If-Block abgearbeitet wird, dann wird die zweite Bedingung nicht mehr geprüft. Das Ergebnis der zweiten Bedingung wäre dann eh egal, da bei einer Or-Verknüpfung es ja völlig ausreichend ist, wenn eine Bedingung "Wahr" wird. Leider verstehe ich noch nicht so wirklich was du eigentlich mit deinem Programm bezwecken möchtest. Deine beiden If-Blöcke sind völlig identisch, bis auf "A_Naht_1". Doch egal ob diese den Wert "1-lagig" oder den Wert "2-lagig_UZ" erhält, es wird der gleiche Programmcode ausgeführt. Ich nehme an, dass "A_Naht_1" noch mehr Werte haben kann als diese beiden und das Programm nur prüfen soll ob einer dieser beiden Werte angenommen wurde und zusätzlich die anderen Parameter passen.
------------------ Mit Besten Grüßen Ruzy5624 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ruzy5624 Mitglied Konstruktionsleiter / staatl. gepr. Techniker
Beiträge: 280 Registriert: 01.07.2015 Product Design Suite 2018 Ultimate Visual Studio 2017 Windows 10 Pro Intel Xeon E3-1245 v5 @ 3,5GHz Nvidia Quadro M4000 8GB RAM 32GB 2x 24" Monitore FullHD SpaceMouse Pro
|
erstellt am: 10. Aug. 2017 19:26 <-- editieren / zitieren --> Unities abgeben: Nur für 68ermustang
Du könntest mal versuchen deinen geposteten Code durch diesen zu ersetzten. Wenn es klappt, dann erläutere ich gerne nochmal was ich getan habe. Code: If A_Naht_1_WF = True Then Select Case A_Naht_1 Case „1-lagig“, "2-lagig_UZ" If A_Abstand_N1 <= Kleinster_Nahtkantenabstand Or A_Abstand_N1 >= Nahtgrenze_1 - Kleinster_Nahtkantenabstand And A_Abstand_N1 < Nahtgrenze_2 Then Feature.IsActive("A_Naht_1") = False Feature.IsActive("A_L1_Knips_1_UK") = False Feature.IsActive("A_L1_Knips_1_OK") = False i = MessageBox.Show("Abstand zu Kederstabkante vergrößern oder Wert außerhalb zulässigem Bereich.", "Nahterstellung fehlgeschlagen", MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1) End Select End If
Leider klappt die richtige Formatierung des Codes nicht. Ich hoffe man kann ihn trotzdem lesen. ------------------ Mit Besten Grüßen Ruzy5624 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
68ermustang Mitglied
Beiträge: 232 Registriert: 24.02.2009 Autodesk Inventor Professional 2023.2.1 Autodesk AutoCAD Mechanical 2023.1.2 GAIN Collaboration ------------------------------------------ Microsoft Windows 10 Pro Intel Core i7-10700 48 GB Ram NVIDIA Quadro P2000
|
erstellt am: 11. Aug. 2017 08:30 <-- editieren / zitieren --> Unities abgeben:
Guten Morgen, vielen Dank für die beiden Antworten, das hat mich sehr gefreut. Ich betitelte die beiden "If-End-Programmteile" im Folgenden als Block 1 und Block 2. Die Meldungen sollen sich unterscheiden, das habe ich im Meldungstext noch nicht berücksichtigt.
Folgendes: [...] Leider verstehe ich noch nicht so wirklich was du eigentlich mit deinem Programm bezwecken möchtest. Deine beiden If-Blöcke sind völlig identisch, bis auf "A_Naht_1". Doch egal ob diese den Wert "1-lagig" oder den Wert "2-lagig_UZ" erhält, es wird der gleiche Programmcode ausgeführt. [...]
Das soll so nicht sein, die beiden If-Blöcke sollen nicht völlig identisch sein: Block 1: WENN A_Naht_1_WF = True UND A_Naht_1 = "1-lagig" DANN mache X Dann soll sich iLogic sagen: Ok, Bedingung erfüllt = Meldung X anzeigen, oder: nicht erfüllt, es passiert nichts, weiter zum nächsten Programmpunkt: Block 2: WENN A_Naht_1_WF = True UND A_Naht_1 = "2-lagig_UZ" DANN mache Y. Hier wieder das gleiche Spiel, iLogic soll sich sagen: Ok, Bedingung erfüllt = Meldung Y anzeigen, oder: nicht erfüllt, es passiert nichts, weiter zum nächsten Programmpunkt. Somit sind Block 1 und Block 2 nicht völlig identisch; die UND-Bedingung unterscheidet sich (und soll je nach Fall eine oder ggf. beide Meldungen anzeigen).
Der Ansatz mit dem "Select Case" interessiert mich, für ggf. andere Anwendungsbereiche; wenn ich dazu eine Erläuterung haben könnte, wäre ich sehr dankbar.
Einen schönen Tag wünscht 68ermustang
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ruzy5624 Mitglied Konstruktionsleiter / staatl. gepr. Techniker
Beiträge: 280 Registriert: 01.07.2015 Product Design Suite 2018 Ultimate Visual Studio 2017 Windows 10 Pro Intel Xeon E3-1245 v5 @ 3,5GHz Nvidia Quadro M4000 8GB RAM 32GB 2x 24" Monitore FullHD SpaceMouse Pro
|
erstellt am: 19. Aug. 2017 11:07 <-- editieren / zitieren --> Unities abgeben: Nur für 68ermustang
Hallo, entschuldige, dass ich mich jetzt erst melde. War eine hektische Woche. eine kurze Erläuterung zu "Select Case": Select Case ist eine Fallunterscheidung. Angenommen ich habe eine Variable vom Typ Integer und diese könnte in unserem Fall den Wert von 1 bis 10 annehmen. Wir wollen nun etwas bestimmtes ausführen, wenn der Fall eintritt das unsere Variable den Wert 4 oder 7 annimmt. Code: Private Sub SelectCaseTutorial() Dim i As Integer ' Dies ist unsere Variable Dim rnd As New Random ' Erstellt uns einen Zufallsgenerator i = rnd.Next(1, 10) ' Weist i eine Zufallszahl von 1 bis 10 zu Select Case i ' Hier wählen wir unsere Variable für die Fallunterscheidung Case 4 ' Hier bestimmen wir was passiert wenn unsere Variable den Wert 4 hat ' Hier würde der Code stehen der ausgeführt werden ' würde, wenn die Variable den Wert 4 hat Case 7 ' Hier bestimmen wir was passiert wenn unsere Variable den Wert 7 hat ' Hier würde der Code stehen der ausgeführt werden ' würde, wenn die Variable den Wert 7 hat Case Else ' Hier bestimmen wir was passiert wenn unsere Variable einen anderen Wert hat ' Hier würde der Code stehen der ausgeführt werden ' würde, wenn die Variable einen anderen Wert hat End Select ' hiermit beenden wir die Fallunterscheidung End Sub
Da die Formatierung hier im Forum nicht so recht will, habe ich es nochmal als Bild angehangen. ------------------ Mit Besten Grüßen Marcel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|