Inventor 2019 - Wie mit ILogic Status Stempel auf Zeichnung setzen.

Inventor 2019 - Wie mit ILogic Status Stempel auf Zeichnung setzen.

_Niko_
Contributor Contributor
1.798Aufrufe
8Antworten
Nachricht 1 von 9

Inventor 2019 - Wie mit ILogic Status Stempel auf Zeichnung setzen.

_Niko_
Contributor
Contributor

Hallo zusammen,

 

ich habe ein Problem, das ich nicht behoben bekomme.

 

Ich möchte gerne, je nachdem was für ein Status die Zeichnung hat, einen Stempel auf die Zeichnung setzten bzw. wieder löschen.

 

Zum Beispiel: 

Prototypenstatus --> Stempel wird eingefügt, ist ein Stempel vorhanden, setzt keinen weiteren hin. 

Serienstatus --> Stempel wird entfernt

 

Der Stempel ist in meinen Zeichnungsressourcen - Skizzierte Symbole hinterlegt.

 

In meiner ILogic-Programmierung löscht er den Stempel bei dem angegebenen Status (Serie).

 

Bei einem Prototypenstatus, setzt er mit keinen Stempel.

Wenn auf der Zeichnung  ein Stempel  vorhanden ist, verdoppelt er diesen Stempel:

Bei einem Stempel werden zwei draus, bei zwei Stempels sind es danach vier usw. 

 

Könnt ihr mir dabei helfen?

 

Sub Main

Dim oDrawDoc As DrawingDocument
oDrawDoc = ThisApplication.ActiveDocument
Dim oSketchedSymbolDef As SketchedSymbolDefinition
oSketchedSymbolDef = oDrawDoc.SketchedSymbolDefinitions.Item("Prototyp")
Dim oSymbols As SketchedSymbols
oSymbols = oDrawDoc.ActiveSheet.SketchedSymbols
Dim oSheet As Sheet
oSheet = oDrawDoc.ActiveSheet

Dim oTG As TransientGeometry
oTG = ThisApplication.TransientGeometry

If iProperties.Value("Custom", "DokStatus") = "Serie - In Arbeit" Then
For Each Item In oSymbols

If Item.Name = "Prototyp" Then
Item.Delete
End If
Next
End If

If iProperties.Value("Custom", "DokStatus") = "Prototyp - In Arbeit" Then
For Each Item In oSymbols
'If Item.Name = "Prototyp" Is Nothing Then
If Item.Name = "Prototyp" Then
'else
else
oSketchedSymbol = oSheet.SketchedSymbols.Add(oSketchedSymbolDef, oTG.CreatePoint2d(10, 10))
End If
Next
End If
End Sub

 

Vielen Dank im Voraus.

 

Gruß

Niko

 

 

 

 

@_Niko_ Der Beitragstitel wurde bearbeitet von @michele.mk zur besseren Auffindbarkeit. Originaltitel: ILocic-Je nach Status-Skizzensymbol(Stempel)auf die Zeichnung setzten oder nicht

0 „Gefällt mir“-Angaben
Akzeptierte Lösungen (2)
1.799Aufrufe
8Antworten
Antworten (8)
Nachricht 2 von 9

Martin-Winkler-Consulting
Advisor
Advisor
Akzeptierte Lösung

@_Niko_ 

Hallo Niko probier mal folgenden Code.

Mangels Beispieldatei und der Skizzenelemente konnte ich den Code allerdings nicht testen.

Und zukünftig Code immer im Code Fenster (</>) posten und im eigenen Interesse kommentieren Smiley (zwinkernd)

Sub Main

Dim oDrawDoc As DrawingDocument
oDrawDoc = ThisApplication.ActiveDocument
Dim oSketchedSymbolDef As SketchedSymbolDefinition
oSketchedSymbolDef = oDrawDoc.SketchedSymbolDefinitions.Item("Prototyp")
Dim oSheet As Sheet
oSheet = oDrawDoc.ActiveSheet
Dim oSymbols As SketchedSymbols
oSymbols = oSheet.SketchedSymbols

Dim oTG As TransientGeometry
oTG = ThisApplication.TransientGeometry

'Löschen aller Prototyp Stempel bei Status Serie - In Arbeit
If iProperties.Value("Custom", "DokStatus") = "Serie - In Arbeit" Then
For Each Item In oSymbols
	If Item.Name = "Prototyp" Then
		Item.Delete
	End If
Next
End If

'Setzen des Prototypstempels bei Status Prototyp - In Arbeit
 If iProperties.Value("Custom", "DokStatus") = "Prototyp - In Arbeit" Then
  If Check_SymbolStatus(oSymbols,"Prototyp") = False Then
    'Kein Stempel drauf, also stempeln
	oSketchedSymbol = oSheet.SketchedSymbols.Add(oSketchedSymbolDef, oTG.CreatePoint2d(10, 10))
  End If
 End If
End Sub

Function Check_SymbolStatus(oSymbols As SketchedSymbols, oSymbolName AS String) AS Boolean
	'Prüft ob schon ein Stempel Prototyp drauf ist
	For Each Item In oSymbols
		If Item.Name = oSymbolName Then
		 Return True
		End If 
	Next
Return False End Function

Gruß Martin

Martin Winkler
CAD Developer
Did you find this post helpful? Feel free to like this post.
Did your question get successfully answered? Then click on the ACCEPT SOLUTION button.


EESignature

Nachricht 3 von 9

_Niko_
Contributor
Contributor

Hallo Martin,

 

Ich wusste leider nicht, wie man den Code in dieses Fenster bringt, für das nächste Mal weiß ich das, Danke.

 

Deinen Code habe ich gerade auch getestet. Auch hier bedanke ich mich bei dir.

Es funktioniert einwandfrei. 

 

Vielen Dank nochmal.

 

Gruß

Niko

0 „Gefällt mir“-Angaben
Nachricht 4 von 9

_Niko_
Contributor
Contributor

Hallo Martin,

 

ich benötige nochmal deine Hilfe bezüglich dem Ilogic-Befehl:

Momentan ist es so, wenn das Feld der benutzerdefinierte Eigenschaften (iProperties.Value("Custom", "DokStatus") leer ist, bringt er mir eine Fehlermeldung.

Ich habe versucht, diese Fehlermeldung zu unterdrücken, leider ist dies mir aber nicht gelungen.

Könntest du mir dabei nochmal Helfen? 

 

Vielen Dank im Voraus.

Anbei sende ich dir nochmal den Code:

 

Sub Main

Dim oDrawDoc As DrawingDocument
oDrawDoc = ThisApplication.ActiveDocument
Dim oSketchedSymbolDef As SketchedSymbolDefinition
oSketchedSymbolDef = oDrawDoc.SketchedSymbolDefinitions.Item("Prototyp")
Dim oSheet As Sheet
oSheet = oDrawDoc.ActiveSheet
Dim oSymbols As SketchedSymbols
oSymbols = oSheet.SketchedSymbols

Dim oTG As TransientGeometry
oTG = ThisApplication.TransientGeometry

'Löschen aller Prototyp Stempel bei Status Serie - In Arbeit
If iProperties.Value("Custom", "DokStatus") = "Serie - In Arbeit" Then
For Each Item In oSymbols
	If Item.Name = "Prototyp" Then
		Item.Delete
	End If
Next
End If

'Setzen des Prototypstempels bei Status Prototyp - In Arbeit
 If iProperties.Value("Custom", "DokStatus") = "Prototyp - In Arbeit" Then
  If Check_SymbolStatus(oSymbols,"Prototyp") = False Then
    'Kein Stempel drauf, also stempeln
	oSketchedSymbol = oSheet.SketchedSymbols.Add(oSketchedSymbolDef, oTG.CreatePoint2d(10, 10))
  End If
 End If
End Sub

Function Check_SymbolStatus(oSymbols As SketchedSymbols, oSymbolName AS String) AS Boolean
	'Prüft ob schon ein Stempel Prototyp drauf ist
	For Each Item In oSymbols
		If Item.Name = oSymbolName Then
		 Return True
		End If 
	Next
Return False End Function

Gruß

Niko

0 „Gefällt mir“-Angaben
Nachricht 5 von 9

Martin-Winkler-Consulting
Advisor
Advisor

Was soll denn passieren wenn in dem Feld DokStatus nichts steht?

Soll dann ein Stempel drauf, oder einfach gar nichts passieren?

 

Kannst du die Fehlermeldung bitte mal posten als Screenshot.

Gruß Martin

Martin Winkler
CAD Developer
Did you find this post helpful? Feel free to like this post.
Did your question get successfully answered? Then click on the ACCEPT SOLUTION button.


EESignature

0 „Gefällt mir“-Angaben
Nachricht 6 von 9

_Niko_
Contributor
Contributor

Also es soll nichts geschehen.

Wenn eine Vorlage geöffnet wird, ist noch kein Einzelteil bzw. Baugruppe in der Zeichnung. 

Somit kann auch nicht festgestellt werden, welcher Dateistatus angenommen wird.

 

Anbei sende ich dir die Fehlermeldung. 

 

Vielen Dank.

Gruß

Niko

 

0 „Gefällt mir“-Angaben
Nachricht 7 von 9

Akzeptierte Lösung

@_Niko_ 

Kriege den Fehler hier nicht reproduziert.

Probiere mal bitte folgenden Code aus:

 

Sub Main

Dim oDrawDoc As Document = ThisDoc.Document
Dim oSketchedSymbolDef As SketchedSymbolDefinition
oSketchedSymbolDef = oDrawDoc.SketchedSymbolDefinitions.Item("Prototyp")
Dim oSheet As Sheet
oSheet = oDrawDoc.ActiveSheet
Dim oSymbols As SketchedSymbols
oSymbols = oSheet.SketchedSymbols

Dim oTG As TransientGeometry
oTG = ThisApplication.TransientGeometry

'Löschen aller Prototyp Stempel bei Status Serie - In Arbeit
If iProperties.Value("Custom", "DokStatus") = "Serie - In Arbeit" Then
For Each Item In oSymbols
	If Item.Name = "Prototyp" Then
		Item.Delete
	End If
Next
End If

'Setzen des Prototypstempels bei Status Prototyp - In Arbeit
 If iProperties.Value("Custom", "DokStatus") = "Prototyp - In Arbeit" Then
  If Check_SymbolStatus(oSymbols,"Prototyp") = False Then
    'Kein Stempel drauf, also stempeln
	oSketchedSymbol = oSheet.SketchedSymbols.Add(oSketchedSymbolDef, oTG.CreatePoint2d(10, 10))
  End If
 End If
End Sub

Function Check_SymbolStatus(oSymbols As SketchedSymbols, oSymbolName AS String) AS Boolean
	'Prüft ob schon ein Stempel Prototyp drauf ist
	For Each Item In oSymbols
		If Item.Name = oSymbolName Then
		 Return True
		End If 
	Next
 Return False
End Function

Martin Winkler
CAD Developer
Did you find this post helpful? Feel free to like this post.
Did your question get successfully answered? Then click on the ACCEPT SOLUTION button.


EESignature

0 „Gefällt mir“-Angaben
Nachricht 8 von 9

_Niko_
Contributor
Contributor

Ich habe es gerade mit mehreren Dateien versucht und es ist kein Fehler aufgetaucht. 

Habe auch den Code verglichen, die Anfangszeilen bzw. Definition hast du geändert oder?

 

Vielen Dank, hat auf alle Fälle geklappt 🙂

 

Gruß

Niko

0 „Gefällt mir“-Angaben
Nachricht 9 von 9

Martin-Winkler-Consulting
Advisor
Advisor

@_Niko_ 

Ja ich habe die Deklaration des Objekts oDrawDoc dem allgemeinen Typ Document zugewiesen und nicht mehr dem Typ DrawingDocument und dann mit ThisDoc.Document dafür gesorgt das wirklich das aufrufende Dokument übergeben wird. Das ist zugegeben ein bisschen gepfuscht weil die Deklaration als DrawingDocument eher richtig war.

Man hätte der Sache auf den Grund gehen müssen warum es den Typenkonflikt gab.

Wenns funktioniert lassen wir es mal dabei 😎

Martin Winkler
CAD Developer
Did you find this post helpful? Feel free to like this post.
Did your question get successfully answered? Then click on the ACCEPT SOLUTION button.


EESignature

0 „Gefällt mir“-Angaben