Hallo liebe Gemeinde,
mein Ziel ist es, die Angaben zu den Oberflächen und Lagetoleranzen anpassen zu können, ohne dies manuell erledigen zu müssen.
Mein erster Gedanke wäre, einen Parameter für das Feld der Oberflächenangabe zu hinterlegen und diesem dann jeweils den passenden Wert zuzuweisen. Leider konnte ich dort keinen Parameter hinterlegen. Dies habe ich sowohl in der Oberflächenangabe auf der Zeichnung als auch im Modell versucht.
Der nächste Gedanke wäre, einen Weg zu finden, über iLogic direkt auf das Feld zugreifen zu können und damit den Wert anzupassen.
Dazu finde ich leider keinerlei Infomationen.
Hat jemand Informationen, wie man das beschriebene Problem lösen kann oder einen weiteren Lösungsansatz, den ich bislang noch nicht bedacht habe?
Mit freundlichsten Grüßen
Tobias
Gelöst! Gehe zur Lösung
Hallo liebe Gemeinde,
mein Ziel ist es, die Angaben zu den Oberflächen und Lagetoleranzen anpassen zu können, ohne dies manuell erledigen zu müssen.
Mein erster Gedanke wäre, einen Parameter für das Feld der Oberflächenangabe zu hinterlegen und diesem dann jeweils den passenden Wert zuzuweisen. Leider konnte ich dort keinen Parameter hinterlegen. Dies habe ich sowohl in der Oberflächenangabe auf der Zeichnung als auch im Modell versucht.
Der nächste Gedanke wäre, einen Weg zu finden, über iLogic direkt auf das Feld zugreifen zu können und damit den Wert anzupassen.
Dazu finde ich leider keinerlei Infomationen.
Hat jemand Informationen, wie man das beschriebene Problem lösen kann oder einen weiteren Lösungsansatz, den ich bislang noch nicht bedacht habe?
Mit freundlichsten Grüßen
Tobias
Gelöst! Gehe zur Lösung
Gelöst von richterBKSAC. Gehe zur Lösung
Hi Tobias,
ich gehe mal davon aus, dass du alle Oberflächen und Lagetoleranzen auf der Zeichnung auf einmal ändern möchtest?
Falls nicht müsstest du noch eine if..then Abfrage einbauen.
If ThisDoc.Document.DocumentType = DocumentTypeEnum.kDrawingDocumentObject Then
Dim activesheet As Sheet = ThisDrawing.ActiveSheet.Sheet
Dim sts As SurfaceTextureSymbols = activesheet.SurfaceTextureSymbols
For Each symbol As SurfaceTextureSymbol In sts
Dim symboldef As SurfaceTextureDINDefinition = symbol.Definition
symboldef.FirstRequirement = "Rz16"
Next
Else
Exit Sub
End If
Weitere Eigenschaften findest du im Inventor unter Hilfe -> Programmierung/API-Hilfe - > SurfaceTextureDINDefinition
If ThisDoc.Document.DocumentType = DocumentTypeEnum.kDrawingDocumentObject Then
Dim activesheet As Sheet = ThisDrawing.ActiveSheet.Sheet
Dim fcf As FeatureControlFrames = activesheet.FeatureControlFrames
For Each frame As FeatureControlFrame In fcf
Dim framerow As FeatureControlFrameRow = frame.FeatureControlFrameRows.Item(1)
framerow.DatumOne = "A"
framerow.GeometricCharacteristic = kCircularity
framerow.Tolerance = "2"
Next
Else
Exit Sub
End If
Weitere Symbole findest du im Inventor unter Hilfe -> Programmierung/API-Hilfe - > GeometricCharacteristicEnum
Das ganze könnte man auch noch mit Eingabeaufforderung und einer Änderung von nur ausgewählten Oberflächen/Lagetoleranzen erweitern.
Grüße
Matthias
Hi Tobias,
ich gehe mal davon aus, dass du alle Oberflächen und Lagetoleranzen auf der Zeichnung auf einmal ändern möchtest?
Falls nicht müsstest du noch eine if..then Abfrage einbauen.
If ThisDoc.Document.DocumentType = DocumentTypeEnum.kDrawingDocumentObject Then
Dim activesheet As Sheet = ThisDrawing.ActiveSheet.Sheet
Dim sts As SurfaceTextureSymbols = activesheet.SurfaceTextureSymbols
For Each symbol As SurfaceTextureSymbol In sts
Dim symboldef As SurfaceTextureDINDefinition = symbol.Definition
symboldef.FirstRequirement = "Rz16"
Next
Else
Exit Sub
End If
Weitere Eigenschaften findest du im Inventor unter Hilfe -> Programmierung/API-Hilfe - > SurfaceTextureDINDefinition
If ThisDoc.Document.DocumentType = DocumentTypeEnum.kDrawingDocumentObject Then
Dim activesheet As Sheet = ThisDrawing.ActiveSheet.Sheet
Dim fcf As FeatureControlFrames = activesheet.FeatureControlFrames
For Each frame As FeatureControlFrame In fcf
Dim framerow As FeatureControlFrameRow = frame.FeatureControlFrameRows.Item(1)
framerow.DatumOne = "A"
framerow.GeometricCharacteristic = kCircularity
framerow.Tolerance = "2"
Next
Else
Exit Sub
End If
Weitere Symbole findest du im Inventor unter Hilfe -> Programmierung/API-Hilfe - > GeometricCharacteristicEnum
Das ganze könnte man auch noch mit Eingabeaufforderung und einer Änderung von nur ausgewählten Oberflächen/Lagetoleranzen erweitern.
Grüße
Matthias
Hallo Matthias,
vielen Dank für deine Antwort. Du hast mir schon einmal sehr weitergeholfen. 🙂
Ich würde gerne nur bestimmte Oberflächenangaben bzw. Form- und Lagetoleranzen anpassen.
An dieser Stelle frage ich mich, wie ich eine spezifische Oberflächenangabe bzw. Form- und Lagetoleranzen auswählen kann.
Leider habe ich in der Hilfe nicht die beschriebenen Stellen gefunden, über die man mehr zu den Methoden herausfinden kann.
Ich würde mich freuen, wenn ich einen Link bekommen könnte, der mich auf die richtige Seite der Hilfe leitet.
Schonmal vielen Dank im Voraus.
Grüße
Tobias
Hallo Matthias,
vielen Dank für deine Antwort. Du hast mir schon einmal sehr weitergeholfen. 🙂
Ich würde gerne nur bestimmte Oberflächenangaben bzw. Form- und Lagetoleranzen anpassen.
An dieser Stelle frage ich mich, wie ich eine spezifische Oberflächenangabe bzw. Form- und Lagetoleranzen auswählen kann.
Leider habe ich in der Hilfe nicht die beschriebenen Stellen gefunden, über die man mehr zu den Methoden herausfinden kann.
Ich würde mich freuen, wenn ich einen Link bekommen könnte, der mich auf die richtige Seite der Hilfe leitet.
Schonmal vielen Dank im Voraus.
Grüße
Tobias
Hi Tobias,
keine Ursache. Außer im Forum oder die API-Hilfe nach SelectSet zu suchen wüsste ich spontan keinen Link.
Deshalb hier eine Idee, wie du es umsetzen könntest.
Sub main()
If ThisDoc.Document.DocumentType = DocumentTypeEnum.kDrawingDocumentObject Then
If ThisDoc.Document.SelectSet.Count = 0 Then
MsgBox("Nichts ausgewählt",,"Fehler")
Exit Sub
End If
Dim selection As SelectSet = ThisDoc.Document.SelectSet
If selection.Item(1).Type = ObjectTypeEnum.kSurfaceTextureSymbolObject Then
Oberflächen_ändern(selection)
ElseIf selection.Item(1).Type = ObjectTypeEnum.kFeatureControlFrameObject Then
Lagetoleranzen_ändern(selection)
End If
Else
Exit Sub
End If
End Sub
Sub Oberflächen_ändern(selected As SelectSet)
Dim new_val As String = get_user_input("Oberflächenwert")
For Each symbol As SurfaceTextureSymbol In selected
Dim symboldef As SurfaceTextureDINDefinition = symbol.Definition
symboldef.FirstRequirement = new_val
Next
End Sub
Sub Lagetoleranzen_ändern(selected As SelectSet)
Dim bezug As String = get_user_input("Bezug")
Dim toleranz As String = get_user_input("Toleranz")
Dim symbollist As New ArrayList
symbollist.Add("Geradheit")
symbollist.Add("Ebenheit")
symbollist.Add("Rundheit")
symbollist.Add("Zylindrizität")
symbollist.Add("Profilform (Linie)")
symbollist.Add("Profilform (Fläche)")
symbollist.Add("Winkel")
symbollist.Add("Rechtwinkligkeit")
symbollist.Add("Parallelität")
symbollist.Add("Position")
symbollist.Add("Konzentrität/Koaxialität")
symbollist.Add("Rundlauf")
symbollist.Add("Gesamtrundlauf")
symbollist.Add("Symmetrie")
Dim sel_symbol As String = ""
While sel_symbol Is ""
sel_symbol = InputListBox("Bitte Symbol auswählen", symbollist, symbollist(0), Title := "Symbolauswahl", ListName := "Symbole")
End While
Dim symbol As GeometricCharacteristicEnum
Select Case sel_symbol
Case "Geradheit"
symbol = GeometricCharacteristicEnum.kStraightness
Case "Ebenheit"
symbol = GeometricCharacteristicEnum.kFlatness
Case "Rundheit"
symbol = GeometricCharacteristicEnum.kCircularity
Case "Zylindrizität"
symbol = GeometricCharacteristicEnum.kCylindricity
Case "Profilform (Linie)"
symbol = GeometricCharacteristicEnum.kProfileOfAnyLine
Case "Profilform (Fläche)"
symbol = GeometricCharacteristicEnum.kProfileOfAnySurface
Case "Winkel"
symbol = GeometricCharacteristicEnum.kAngularity
Case "Rechtwinkligkeit"
symbol = GeometricCharacteristicEnum.kPerpendicularity
Case "Parallelität"
symbol = GeometricCharacteristicEnum.kParallelism
Case "Position"
symbol = GeometricCharacteristicEnum.kPosition
Case "Konzentrität/Koaxialität"
symbol = GeometricCharacteristicEnum.kConcentricityAndCoaxiality
Case "Rundlauf"
symbol = GeometricCharacteristicEnum.kCircularRunout
Case "Gesamtrundlauf"
symbol = GeometricCharacteristicEnum.kTotalRunout
Case "Symmetrie"
symbol = GeometricCharacteristicEnum.kSymmetry
End Select
For Each frame As FeatureControlFrame In selected
Dim framerow As FeatureControlFrameRow = frame.FeatureControlFrameRows.Item(1)
framerow.DatumOne = bezug
framerow.GeometricCharacteristic = symbol
framerow.Tolerance = toleranz
Next
End Sub
Function get_user_input(val_name As String) As String
Dim new_value As String = ""
While new_value = ""
new_value = InputBox("Bitte den neuen Wert eingeben", val_name, "")
End While
Return new_value
End Function
Grüße
Matthias
Hi Tobias,
keine Ursache. Außer im Forum oder die API-Hilfe nach SelectSet zu suchen wüsste ich spontan keinen Link.
Deshalb hier eine Idee, wie du es umsetzen könntest.
Sub main()
If ThisDoc.Document.DocumentType = DocumentTypeEnum.kDrawingDocumentObject Then
If ThisDoc.Document.SelectSet.Count = 0 Then
MsgBox("Nichts ausgewählt",,"Fehler")
Exit Sub
End If
Dim selection As SelectSet = ThisDoc.Document.SelectSet
If selection.Item(1).Type = ObjectTypeEnum.kSurfaceTextureSymbolObject Then
Oberflächen_ändern(selection)
ElseIf selection.Item(1).Type = ObjectTypeEnum.kFeatureControlFrameObject Then
Lagetoleranzen_ändern(selection)
End If
Else
Exit Sub
End If
End Sub
Sub Oberflächen_ändern(selected As SelectSet)
Dim new_val As String = get_user_input("Oberflächenwert")
For Each symbol As SurfaceTextureSymbol In selected
Dim symboldef As SurfaceTextureDINDefinition = symbol.Definition
symboldef.FirstRequirement = new_val
Next
End Sub
Sub Lagetoleranzen_ändern(selected As SelectSet)
Dim bezug As String = get_user_input("Bezug")
Dim toleranz As String = get_user_input("Toleranz")
Dim symbollist As New ArrayList
symbollist.Add("Geradheit")
symbollist.Add("Ebenheit")
symbollist.Add("Rundheit")
symbollist.Add("Zylindrizität")
symbollist.Add("Profilform (Linie)")
symbollist.Add("Profilform (Fläche)")
symbollist.Add("Winkel")
symbollist.Add("Rechtwinkligkeit")
symbollist.Add("Parallelität")
symbollist.Add("Position")
symbollist.Add("Konzentrität/Koaxialität")
symbollist.Add("Rundlauf")
symbollist.Add("Gesamtrundlauf")
symbollist.Add("Symmetrie")
Dim sel_symbol As String = ""
While sel_symbol Is ""
sel_symbol = InputListBox("Bitte Symbol auswählen", symbollist, symbollist(0), Title := "Symbolauswahl", ListName := "Symbole")
End While
Dim symbol As GeometricCharacteristicEnum
Select Case sel_symbol
Case "Geradheit"
symbol = GeometricCharacteristicEnum.kStraightness
Case "Ebenheit"
symbol = GeometricCharacteristicEnum.kFlatness
Case "Rundheit"
symbol = GeometricCharacteristicEnum.kCircularity
Case "Zylindrizität"
symbol = GeometricCharacteristicEnum.kCylindricity
Case "Profilform (Linie)"
symbol = GeometricCharacteristicEnum.kProfileOfAnyLine
Case "Profilform (Fläche)"
symbol = GeometricCharacteristicEnum.kProfileOfAnySurface
Case "Winkel"
symbol = GeometricCharacteristicEnum.kAngularity
Case "Rechtwinkligkeit"
symbol = GeometricCharacteristicEnum.kPerpendicularity
Case "Parallelität"
symbol = GeometricCharacteristicEnum.kParallelism
Case "Position"
symbol = GeometricCharacteristicEnum.kPosition
Case "Konzentrität/Koaxialität"
symbol = GeometricCharacteristicEnum.kConcentricityAndCoaxiality
Case "Rundlauf"
symbol = GeometricCharacteristicEnum.kCircularRunout
Case "Gesamtrundlauf"
symbol = GeometricCharacteristicEnum.kTotalRunout
Case "Symmetrie"
symbol = GeometricCharacteristicEnum.kSymmetry
End Select
For Each frame As FeatureControlFrame In selected
Dim framerow As FeatureControlFrameRow = frame.FeatureControlFrameRows.Item(1)
framerow.DatumOne = bezug
framerow.GeometricCharacteristic = symbol
framerow.Tolerance = toleranz
Next
End Sub
Function get_user_input(val_name As String) As String
Dim new_value As String = ""
While new_value = ""
new_value = InputBox("Bitte den neuen Wert eingeben", val_name, "")
End While
Return new_value
End Function
Grüße
Matthias
Sie finden nicht, was Sie suchen? Fragen Sie die Community oder teilen Sie Ihr Wissen mit anderen.