| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY bietet das umfangreichste Ökosystem von B2B als auch B2C-Lösungen für IT-Akteure auf dem Markt, eine Pressemitteilung
|
Autor
|
Thema: iLogic Dokument-Regel vs externe Regel (2402 / mal gelesen)
|
OibelTroibel Mitglied Konstrukteur
Beiträge: 602 Registriert: 18.04.2014 ACAD/Inventor 2018-21
|
erstellt am: 23. Mrz. 2020 14:36 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen Ich habe einen iLogic-Code, der über eine "interne" Regel ausführt funktioniert und über eine externe Regel nicht das macht was er soll. Ist das möglich, bzw sollte es nicht irrelevant sein woher der Code ausgeführt wird? Code: 'Prüfen ob Dokument gespeichert wurde Select ThisDoc.Document.FileSaveCounter Case 0 MessageBox.Show("Bitte Bauteil zuerst speichern", "Speichererinnerung", MessageBoxButtons.OK, MessageBoxIcon.Stop) Return End Select ' Sicherstellen, dass nur .ipt berücksichtigt werden Select Right(ThisDoc.FileName(True), 4) Case ".idw" Return Case ".dwg" Return Case ".iam" Return Case ".ipn" Return End Select 'Prüfen ob Paramater "Beschaffung" bereits vorhanden ist und allenfalls erstellen Dim oUserParameter As UserParameters oUserParameter=ThisDoc.Document.ComponentDefinition.Parameters.UserParameters Try otester = oUserParameter.Item("Beschaffung") Catch oParameter=oUserParameter.AddByValue("Beschaffung", "3D-Druck", UnitsTypeEnum.kTextUnits) MultiValue.SetList("Beschaffung", "3D-Druck", "Blechteil", "Drehteil", "Einkaufsteil", "Frästeil", "nicht definiert", "Plexiglas") Parameter ("Beschaffung") = (InputListBox("Beschaffungsmethode wählen", MultiValue.List("Beschaffung"), Beschaffung, Title := "Beschaffungsmethode", ListName := "Auswahl")) End Try 'iLogicVb.UpdateWhenDone=True If Beschaffung = "nicht definiert" Then 'Liste der zu löschenden Benutzerproperties Dim MyArrayList As New ArrayList MyArrayList.Add("Beschaffung") Dim oCustProp As Inventor.Property 'definiere Liste aller Benutzerproperties oCustomPropertySet = ThisDoc.Document.PropertySets.Item("Inventor User Defined Properties") 'durchsuche alle properties der Liste For Each oCustProp In oCustomPropertySet 'prüfe die Liste nach der zu löschenden Properties If MyArrayList.Contains(oCustProp.Name)Then 'lösche das Benutzerpropertie oCustProp.Delete Else 'mache nichts End If Next Else iProperties.Value("Custom", "Beschaffung") = Beschaffung End If 'iLogicVb.UpdateWhenDone=True
von der externen Regel ausgeführt, bleibt das benutzdefinierte iPropertie leer, von intern ausgeführt wird die Eigenschaft korrekt befüllt. Beste Grüsse Raphael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
muellc Ehrenmitglied V.I.P. h.c. ICT Specialist
Beiträge: 3501 Registriert: 30.11.2006 Inventor 2017.4.12 64 bit Windows 10 Enterprise 64 bit 3DEXPERIENCE R2016x -------------------- HP Z-Book 15 G4 32 Gig Ram NVIDIA Quadro M2200 2x HP E243i
|
erstellt am: 24. Mrz. 2020 08:30 <-- editieren / zitieren --> Unities abgeben: Nur für OibelTroibel
|
OibelTroibel Mitglied Konstrukteur
Beiträge: 602 Registriert: 18.04.2014 ACAD/Inventor 2018-21
|
erstellt am: 25. Mrz. 2020 22:23 <-- editieren / zitieren --> Unities abgeben:
|
muellc Ehrenmitglied V.I.P. h.c. ICT Specialist
Beiträge: 3501 Registriert: 30.11.2006 Inventor 2017.4.12 64 bit Windows 10 Enterprise 64 bit 3DEXPERIENCE R2016x -------------------- HP Z-Book 15 G4 32 Gig Ram NVIDIA Quadro M2200 2x HP E243i
|
erstellt am: 26. Mrz. 2020 11:03 <-- editieren / zitieren --> Unities abgeben: Nur für OibelTroibel
|
OibelTroibel Mitglied Konstrukteur
Beiträge: 602 Registriert: 18.04.2014 ACAD/Inventor 2018-21
|
erstellt am: 27. Mrz. 2020 10:44 <-- editieren / zitieren --> Unities abgeben:
|
Philfi Mitglied Student
Beiträge: 14 Registriert: 12.11.2021
|
erstellt am: 26. Nov. 2021 08:27 <-- editieren / zitieren --> Unities abgeben: Nur für OibelTroibel
Hallo, ich habe ein ähnliches Problem wie Raphael. Ich habe eine Baugruppe in der ich in der Parameterliste (fx) Parameter definiert habe. Diese waren bislang in internen Regeln definiert, sodass sich bei Änderung eines Parameters mein Modell sofort verändert (aktualisiert) hat. Jetzt wollte ich jedoch externe Regeln erstellen. Das Problem ist nun jedoch, dass über die externen Regeln mein Modell sich nicht verändert bei Änderung einzelner Parameter (fx). Ich habe eine interne Regel erstellt in der ich mit dem Befehl iLogicVb.RunExternalRule die externe Regel ausführen will. Bislang hat kein Lösungsweg funktioniert. Kann ich damit auch gleichzeitig mehrere externe Regeln ausführen lassen? Könnte mir da jemand weiterhelfen? Vielen Dank im Voraus. MfG Philipp Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
iogurt Mitglied Konstrukteur
Beiträge: 287 Registriert: 30.09.2005 Inventor 2021 Professional
|
erstellt am: 26. Nov. 2021 08:35 <-- editieren / zitieren --> Unities abgeben: Nur für OibelTroibel
Philipp, hast du den Dateipfad, in dem deine externe Regel gespeichert ist, bei der iLogic-Konfiguration hinzugefügt? Wenn nicht, probier das mal: "Extras" -> kleiner Pfeil neben "Optionen" -> "iLogic-Konfiguration" und dann den Pfad hinzufügen, und vielleicht noch den Dateityp anpassen (unsere externen Regeln sind alle .txt) [Diese Nachricht wurde von iogurt am 26. Nov. 2021 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Philfi Mitglied Student
Beiträge: 14 Registriert: 12.11.2021
|
erstellt am: 26. Nov. 2021 10:51 <-- editieren / zitieren --> Unities abgeben: Nur für OibelTroibel
Hatte ich tatsächlich nicht hinterlegt, hat aber leider das Problem nicht gelöst. Ich hatte es jetzt auch einem ganz einfachen Beispiel versucht zu lösen: -externe Regel (Name: "Testen") erstellt mit einer Formel: Parameter("Ergebnis") = Parameter("a") * Parameter("b") -in der Parameterliste (fx) die Parameter "Ergebnis", "a" und "b" definiert -interne Regel erstellt: iLogicVb.RunExternalRule("Testen") InventorVb.DocumentUpdate() Oder muss das anders gelöst werden? Verändere ich die Parameter "a" oder "b" passiert nichts, führe ich die Regel aber anschließend manuell nochmal aus, wird das "Ergebnis" mit den veränderten Parametern berechnet. Also es passiert nicht automatisch. MfG Philipp [Diese Nachricht wurde von Philfi am 26. Nov. 2021 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2630 Registriert: 15.11.2006 Windows 10 x64, AIP 2020-2025
|
erstellt am: 27. Nov. 2021 13:23 <-- editieren / zitieren --> Unities abgeben: Nur für OibelTroibel
Hallo Damit die interne Regel automatisch ausgeführt wird, müssen darin in irgendeiner Form die beiden Parameter auftauchen. Am einfachsten weist man Variablen die Werte zu. Dann läuft auch die externe Regel. Ansosnten würde jede (nicht unterdrückte) interne Regel bei einer Parameteränderung loslaufen.
Code:
Dim dummy_A As Object = a Dim dummy_B As Object = biLogicVb.RunExternalRule("externe_Regel_Parameter_Update")
------------------ MfG Ralf RKW Solutions GmbH www.RKW-Solutions.com Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Philfi Mitglied Student
Beiträge: 14 Registriert: 12.11.2021
|
erstellt am: 29. Nov. 2021 13:28 <-- editieren / zitieren --> Unities abgeben: Nur für OibelTroibel
|
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2630 Registriert: 15.11.2006 Windows 10 x64, AIP 2020-2025
|
erstellt am: 29. Nov. 2021 13:50 <-- editieren / zitieren --> Unities abgeben: Nur für OibelTroibel
Hallo Dafür wurde ja der Trigger "Beliebige Modellparameteränderung" und "Beliebige Userparameteränderung" eingeführt. Packt man die externe Regel da rein, sollte sie auch laufen. Man muss dabei nur im Hinterkopf behalten: Wenn man sehr viele Parameter nacheinander ändert, läuft die Regel über diese Trigger bei JEDER einzelnen Änderung. Je nachdem was dann gemacht wird, kann das dauern. ------------------ MfG Ralf RKW Solutions GmbH www.RKW-Solutions.com Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |