Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Inventor
  iLogic - Problem mit Meldung

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
  
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
Autor Thema:  iLogic - Problem mit Meldung (1561 mal gelesen)
68ermustang
Mitglied



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

Beiträge: 215
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 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 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


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

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 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 68ermustang 10 Unities + Antwort hilfreich

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 If

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 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



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

Beiträge: 215
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 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 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


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

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 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 68ermustang 10 Unities + Antwort hilfreich

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


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

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 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 68ermustang 10 Unities + Antwort hilfreich

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



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

Beiträge: 215
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 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

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


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

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 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 68ermustang 10 Unities + Antwort hilfreich


SelectCase1708191106.PNG

 
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 >>)

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)2024 CAD.de | Impressum | Datenschutz