Maßstab im Inventor-Schriftfeld einfügen
15. Oktober 2009, 18:52 Uhr
Wir möchten auf der Arbeit gerne den Maßstab einer Inventor-Zeichnung im Schriftfeld eingetragen haben. Bis jetzt haben wir das gelöst, indem wir eine Textbox vom Typ “Angeforderte Eingabe” und mit dem Namen “SCALE” im Schriftfeld haben, die der Benutzer selber ausfüllen muss. Das klappt an sich auch ganz gut, man neigt nur leider dazu, das Eintragen zu vergessen. ;)
Im Netz gibt es eine Lösung, wie man automatisch den Maßstab der Erstansicht ermitteln und als iProperty speichern kann. Dieses iProperty kann man dann auch im Schriftfeld anzeigen: Maßstab auch bei Inventor 2009 64-Bit automatisch im Schriftkopf einfügen
Leider hat diese Lösung einen Haken. Das iProperty wird global in der Zeichnung gespeichert und gilt für sämtliche Blätter. Es klappt also nicht, wenn die Blätter verschiedene Maßstäbe darstellen.
Um das Problem zu lösen, verwende ich kein iProperty sonder das “SCALE”-Textfeld in unserem Schriftfeld. Die Werte für die angeforderte Eingabe werden im jeweiligen Schriftfeld gespeichert und können Sie daher unterscheiden. Außerdem könnte die Benutzer den Wert bei Bedarf relativ einfach ändern…
Der Quelltext ist allerdings kein VBA-Code sondern in VB.NET geschrieben und wird in unserm Inventor-AddIn verwendet:
'''
''' Aktualisiert den "Maßstab" im Schriftfeld einer Zeichnung...
'''
''' Inventor-Zeichnung
Public Sub RefreshDrawingTitleBlockScale(ByVal drawDoc As Inventor.DrawingDocument)
If drawDoc IsNot Nothing Then 'Wenn eine Zeichnung übergeben wurde...
Dim sScale As String
For Each oSheet As Inventor.Sheet In drawDoc.Sheets 'Für alle Blätter...
If oSheet.TitleBlock IsNot Nothing Then 'Wenn ein Schriftfeld vorhanden ist...
Try
sScale = ""
If oSheet.DrawingViews.Count > 0 Then 'Wenn Ansichten vorhanden sind...
sScale = ConvertDrawingScaleToText(oSheet.DrawingViews(1).Scale)
End If
For Each oTextBox As Inventor.TextBox In oSheet.TitleBlock.Definition.Sketch.TextBoxes 'Für alle Textfelder...
If oTextBox.Text.Equals("SCALE") Then 'Wenn "Maßstab"-Textfeld...
oSheet.TitleBlock.SetPromptResultText(oTextBox, sScale)
drawDoc.Update()
Exit For
End If
Next oTextBox
Catch ex As Exception
Continue For
End Try
End If
Next oSheet
End If
End Sub
'''
''' ...
'''
''' Maßstab
''' Maßstab-Text
Private Function ConvertDrawingScaleToText(ByVal scale As Double) As String
If scale >= 1 Then '...
If (10 * scale Mod 10) = 0 Then '...
Return Format(scale, "0") & ":1"
Else '...
Return Format(scale, "0.0") & ":1"
End If
Else '...
If (10 * (1 / scale) Mod 10) = 0 Then '...
Return "1:" & Format(1 / scale, "0")
Else '...
Return "1:" & Format(1 / scale, "0.0")
End If
End If
Return ""
End Function
0 Kommentare
Einen Kommentar hinterlassen