iLogic Dokument-Regel vs externe Regel / Inventor
OibelTroibel 23. Mrz. 2020, 14:36

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

muellc 24. Mrz. 2020, 08:30

Hallo Raphael,

ändere mal

Code:
iProperties.Value("Custom", "Beschaffung") = Beschaffung

in

Code:
iProperties.Value("Custom", "Beschaffung") = Parameter("Beschaffung")

OibelTroibel 25. Mrz. 2020, 22:23

Hallo muellc

Vielen Dank für dein Tipp, funktioniert nun bestens
Was genau ist der Unterschied der beiden Schreibweisen?

Beste Grüsse
Raphael

muellc 26. Mrz. 2020, 11:03

Ganz ehrlich?
KEine AHnung.

Ich würde mal schätzen das meine Schreibweise eindeutiger ist als ein eingefügter Name, aber ich bin was ILogic angeht immer noch ein Anfänger.

OibelTroibel 27. Mrz. 2020, 10:44

Danke für deine ehrliche Antwort Ich werde es mir aber angewöhnen die eindeutigere Schreibweise zu verwenden.