Ankündigungen

Ab Dezember werden wir Inhalte aus der Community, die 10 Jahre und älter sind, archivieren. Diese FAQ enthält weitere Informationen.

ILogic - benutzerdefinierte Eigenschaften löschen, erstellen und setzen (boolesch)

Jan.Lehmann_TRG
Enthusiast
Enthusiast

ILogic - benutzerdefinierte Eigenschaften löschen, erstellen und setzen (boolesch)

Jan.Lehmann_TRG
Enthusiast
Enthusiast

Hallo, ich möchte folgende Sachen in einer I-Logic ausführen, aber irgendwie stehe ich wie der Ochs vorm Berg ...

1. wenn benutzerdefinierte Eigenschaft von MyArrayList von diesen Feldern ist "Text", dann lösche die Eigenschaft.

2. wenn benutzerdefinierte Eigenschaft von MyArrayList ist nicht vorhanden, dann erstelle die Eigenschaft als "Boolesch" und setze den Wert "False".

3. wenn benutzerdefinierte Eigenschaft "Boolesch" von MyArrayList ist leer, dann setze den Wert "False".

Dim MyArrayList As New ArrayList
MyArrayList.Add("Welded Assembly")
MyArrayList.Add("Batch Number Relevant")
MyArrayList.Add("Configuration List Relevant")
MyArrayList.Add("Homologation Relevant")
MyArrayList.Add("Safety Relevant")
MyArrayList.Add("Serial Number Relevant")
MyArrayList.Add("Spare Part")
MyArrayList.Add("Vehicle File Relevant")
MyArrayList.Add("Welded Assembly")
MyArrayList.Add("Adhesived Assembly")

 

0 „Gefällt mir“-Angaben
Antworten
Akzeptierte Lösungen (2)
844Aufrufe
3Antworten
Antworten (3)

Jan.Lehmann_TRG
Enthusiast
Enthusiast

Hier fängt es schon an - wie lese ich aus, on die Eigenschaft nicht "boolesch" ist, oder ob sie Text ist?

'Liste der benutzerdefinierten Eigenschaften
Dim MyArrayList As New ArrayList
MyArrayList.Add("Welded Assembly")
MyArrayList.Add("Batch Number Relevant")
MyArrayList.Add("Configuration List Relevant")
MyArrayList.Add("Homologation Relevant")
MyArrayList.Add("Safety Relevant")
MyArrayList.Add("Serial Number Relevant")
MyArrayList.Add("Spare Part")
MyArrayList.Add("Vehicle File Relevant")
MyArrayList.Add("Welded Assembly")
MyArrayList.Add("Adhesived Assembly")

'Erstellen der Gruppe der Eigenschaften
oCustomPropertySet = ThisDoc.Document.PropertySets.Item("Inventor User Defined Properties")

'Suche nach der Eigenschaften
For Each oCustProp In oCustomPropertySet

'wenn benutzerdefinierte Eigenschaft von MyArrayList von diesen Feldern ist "Text", dann l�sche die Eigenschaft.

'Vergleiche der Eigenschaften mir der Liste, welche gelöscht werden sollen
If MyArrayList.Contains(oCustProp.name)Then

'Löschen der Eigenschaften
oCustProp.Delete 
Else 
'skip it
End If
Next

 

0 „Gefällt mir“-Angaben

martin_winkler
Advisor
Advisor
Akzeptierte Lösung

@Jan.Lehmann_TRG 

Hier zunächst mal ein Beispiel wie du den Typ eines Properties heraus finden kannst:

 

'Erstellen der Gruppe der Eigenschaften
oCustomPropertySet = ThisDoc.Document.PropertySets.Item("Inventor User Defined Properties")
Sub Main
'Erstellen der Gruppe der Eigenschaften
oCustomPropertySet = ThisDoc.Document.PropertySets.Item("Inventor User Defined Properties")
'Suche nach dem Typ von oCustProp
For Each oCustProp In oCustomPropertySet
	 If TypeOf(oCustProp.Value) Is String Then
       Logger.Debug("Methode 1: String")
     End If
	 
	 If TypeOf(oCustProp.Value) Is Boolean Then
       Logger.Debug("Methode 1: Booelan")
     End If
Logger.Debug("Methode 2: " & oCustProp.Value.GetType().toString)
Logger.Debug("Methode 3: " & TypeOfCustProp(oCustProp))
Next

End Sub

Function TypeOfCustProp(oCustProp As [Property]) As String
	If TypeOf(oCustProp.Value) Is String Then
       Return "String"
     End If
	 
	 If TypeOf(oCustProp.Value) Is Boolean Then
       Return "Booelan"
     End If
	 
	 If TypeOf(oCustProp.Value) Is Double Then
       Return "Double"
     End If
	 
	 If TypeOf(oCustProp.Value) Is Int32 Then
       Return "Integer"
     End If
	 
	 If TypeOf(oCustProp.Value) Is Date Then
       Return "Date"
     End If
End Function

 

Liefert als Ergebnis im  iLogic-Protokoll:

TRACE|Regel wird eingegeben: Regel0 (in Bauteil1)
DEBUG|Methode 1: Booelan
DEBUG|Methode 2: System.Boolean
DEBUG|Methode 3: Booelan
DEBUG|Methode 1: String
DEBUG|Methode 2: System.String
DEBUG|Methode 3: String
DEBUG|Methode 2: System.DateTime
DEBUG|Methode 3: Date
DEBUG|Methode 2: System.Double
DEBUG|Methode 3: Double
TRACE|Regel wird beendet: Regel0 (in Bauteil1)
INFO| 14: >>---------------------------
TRACE|Regel wird eingegeben: Regel0 (in Bauteil1)
DEBUG|Methode 1: Booelan
DEBUG|Methode 2: System.Boolean
DEBUG|Methode 3: Booelan
DEBUG|Methode 1: String
DEBUG|Methode 2: System.String
DEBUG|Methode 3: String
DEBUG|Methode 2: System.DateTime
DEBUG|Methode 3: Date
DEBUG|Methode 2: System.Int32
DEBUG|Methode 3: Integer
TRACE|Regel wird beendet: Regel0 (in Bauteil1)

 

Spannend ist das bei Zahlenwerten. Da kommt je nachdem was für eine Zahl eingegeben wurde der Typ Integer oder Double raus.

 

Dann würde ich dir empfehlen das zunächst mal mit einem Property zu testen, bevor du anfängst die Inhalte deines Array zu untersuchen, zumal du noch verschiedene Sachen gleichzeitig machen willst.

Also Step by Step.

Ich hoffe das bringt dich zu weiteren zündenden Ideen.

hazem.adel
Alumni
Alumni
Akzeptierte Lösung

Hallo @Jan.Lehmann_TRG ,

Hat dir der Tipp von Martin geholfen und deine Frage beantwortet?

Wenn ja, kannst du gerne auf den Button "Als Lösung akzeptieren" klicken, damit auch andere Anwender von der Information profitieren können.

Wenn du selbst eine andere Antwort gefunden hast, kannst du es mit uns hier teilen.

Ansonsten kannst du uns gerne auch ein Update geben, damit man weiß was bei dir nun der Stand der Dinge ist und wie man eventuell noch helfen kann. 🙂

You found a post helpful? Then feel free to give likes to these posts!
Your question got successfully answered? Then just click on the 'Mark as solution' button. 


Hazem Adel
Community Manager

0 „Gefällt mir“-Angaben