| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | | | | Auf dem Weg zur digitalen Auftragsmappe. , ein Anwenderbericht
|
Autor
|
Thema: Volumen im Schriftfeld formatiert in cm³ (1178 / mal gelesen)
|
Roland Schröder Moderator Dr.-Ing. Maschinenbau, Entwicklung & Konstruktion von Spezialmaschinen
Beiträge: 13438 Registriert: 02.04.2004 IV 2024
|
erstellt am: 27. Jul. 2018 23:44 <-- editieren / zitieren --> Unities abgeben:
|
Ruzy5624 Mitglied Konstruktionsleiter / staatl. gepr. Techniker
Beiträge: 280 Registriert: 01.07.2015 Product Design Suite 2018 Ultimate Visual Studio 2017 Windows 10 Pro Intel Xeon E3-1245 v5 @ 3,5GHz Nvidia Quadro M4000 8GB RAM 32GB 2x 24" Monitore FullHD SpaceMouse Pro
|
erstellt am: 28. Jul. 2018 00:17 <-- editieren / zitieren --> Unities abgeben: Nur für Roland Schröder
Mahlzeit, meines Wissens nach geht dies nicht ohne weiteres. Man kann sich allerdings mit einer iLogic-Regel behelfen, um so das Volumen des Bauteils oder der Baugruppe im gewünschten Format in ein benutzerdefiniertes iProperty zu schreiben und dann dieses im Schriftfeld verknüpfen. Dann am besten noch die Regel mit einem Ereignisauslöser verknüpfen, damit die Regel immer wieder automatisch ausgeführt wird und das benutzerdefinierte iProperty aktualisiert wird. Hier der Code für die Regel:
Code: Dim oDoc As DrawingDocument oDoc = ThisApplication.ActiveDocumentDim oSheet As Sheet oSheet = oDoc.Sheets(1) Dim oView As DrawingView oView = oSheet.DrawingViews(1) Dim oRefFileDes As ReferencedFileDescriptor oRefFileDes = oView.ReferencedFile Dim oRefDoc As Document oRefDoc = oRefFileDes.ReferencedDocument Dim oUsePropSet As PropertySet oUsePropSet = oDoc.PropertySets.Item("Inventor User Defined Properties") Dim oDesProps As PropertySet oDesProps = oRefDoc.PropertySets.Item("Design Tracking Properties") Try oUsePropSet.Add("", "Volume_cm") Catch End Try oUsePropSet.Item("Volume_cm").Value = CInt(oDesProps.Item("Volume").Value)
------------------ Mit Besten Grüßen Marcel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Roland Schröder Moderator Dr.-Ing. Maschinenbau, Entwicklung & Konstruktion von Spezialmaschinen
Beiträge: 13438 Registriert: 02.04.2004 IV 2024
|
erstellt am: 28. Jul. 2018 00:50 <-- editieren / zitieren --> Unities abgeben:
Danke, ich hab's befürchtet. ... ... und mir das in der Zwischenzeit auch schon so ähnlich in VBA gebaut. Hab da schon so eine Sub für die xyz-Box am Start, und die füllt jetzt zusätzlich ein weiteres benutzerdefiniertes iProp aus: Code: Dim dV As Double Dim sV As String dV = oPart.ComponentDefinition.MassProperties.Volume dV = Round(dV, 2) MsgBox "xyz-Box:" & vbTab & sBox & vbCrLf & "Volumen:" & vbTab & dV & " cm³" sV = Str(dV) Call SetPropertyValue(oPart.PropertySets(4), "Volumen cm³", sV)
Unbefriedigend ist jetzt allerdings noch, dass die Anzeige in der Message-Box mit Komma und führender Null erfolgt, der Eintrag im iProp, der auf Konversion in String besteht, dagegen mit Dezimal-Punkt und ohne führende Null, und dieser Eintrag dann auch so in der idw erscheint. Automatisch lass ich das bisher nicht laufen, denn bisher war ich unsicher, ob das unter gewissen Umständen nicht doch auch Ärger machen kann. ------------------ Roland www.Das-Entwicklungsbuero.de
It's not the hammer - it's the way you hit! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ruzy5624 Mitglied Konstruktionsleiter / staatl. gepr. Techniker
Beiträge: 280 Registriert: 01.07.2015 Product Design Suite 2018 Ultimate Visual Studio 2017 Windows 10 Pro Intel Xeon E3-1245 v5 @ 3,5GHz Nvidia Quadro M4000 8GB RAM 32GB 2x 24" Monitore FullHD SpaceMouse Pro
|
erstellt am: 28. Jul. 2018 09:14 <-- editieren / zitieren --> Unities abgeben: Nur für Roland Schröder
Um die Zahl in ein gewünschtes Format zu zwängen gibt es verschiedene Ansätze. Für einen Fall könnte folgendes geeignet sein: Code: Call SetPropertyValue(oPart.PropertySets(4), "Volumen cm³", sV.ToString("####0000.00"))
Wie genau der String formatiert werden soll kann genau festgelegt werden.
Hier noch eine Erklärung zum Formatieren und den eingesetzten Formatierungsbezeichnern: Klick mich!
------------------ Mit Besten Grüßen Marcel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Roland Schröder Moderator Dr.-Ing. Maschinenbau, Entwicklung & Konstruktion von Spezialmaschinen
Beiträge: 13438 Registriert: 02.04.2004 IV 2024
|
erstellt am: 28. Jul. 2018 14:45 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von Ruzy5624: Wie genau der String formatiert werden soll kann genau festgelegt werden.
Auch dynamisch? Ich hätte nämlich gern eine Formatierung nach Anzahl angezeigter Stellen (wg. Lesbarkeit und Platz im Schriftfeld), Staffelung ungefähr folgendermaßen: 156 15,6 1,56 0,16 0,02 (ja, ich weiß, dass das am Ende ein bisschen unlogisch ist, aber das kann ich ja noch anpassen.) Ich habe das auch schon mit dem folgenden Trick ungefähr erreicht,
Code: Dim fV As Double fV = 10 ^ Round(Log(dV) / Log(10) - 2.5) dV = Round(dV / fV) * fV
aber das widerspricht einer Formatierung mit fester Anzahl Stellen nach dem Komma. (dass ich 2,5 und nicht 2 oder 3 vom Exponenten abziehe, liegt an dem erwähnten unlogischen Wunsch.) Eine Methode wie im idw-Bemaßungsstil, einfach Führende_Null_Anzeigen_Ja/Nein, habe ich in der .Net-Erklärung noch nicht gefunden. Auf eine case-Folge mit allen möglichen verschiedenen Formaten für verschiedene Wertebereiche habe ich irgendwie keine Lust, aber vielleicht geht es ja am Ende nur genau so (vor allem bei unlogischen Wünschen . ------------------ Roland www.Das-Entwicklungsbuero.de It's not the hammer - it's the way you hit! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|