| | |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| | |
 | PNY erweitert seine Teams im Mittleren Osten und in Saudi-Arabien zur Unterstützung des strategischen Wachstums, eine Pressemitteilung
|
|
Autor
|
Thema: Debug.Print: Typen als Text statt Zahl (889 / mal gelesen)
|
Ticky72 Mitglied

 Beiträge: 35 Registriert: 17.02.2016 Inventor 2019 Win7 64Bit
|
erstellt am: 20. Mrz. 2017 13:24 <-- editieren / zitieren --> Unities abgeben:         
Hallo, nicht viel los im Forum. Aber vielleicht kann mir trotzdem wer helfen. Ich möchte in einer DrawingView die DrawingCurves auslesen: Code:
... Dim oFrontView As DrawingView Set oFrontView = oSheet.DrawingViews.AddBaseView(.... ... Dim oObject As Object Dim oObjectlist As ObjectCollection Set oObjectlist = ThisApplication.TransientObjects.CreateObjectCollection On Error Resume Next Dim s As String For Each oObject In oFrontView.DrawingCurves oObjectlist.Add oObject s = "Curvetype: " & oObject.CurveType Debug.Print s Next
Debug.Print gibt mir den Typ als Zahlenwert aus. Was muss ich tun, dass ich den Typ als Klartext bekomme? Im Voraus vielen Dank für eure Hilfe Helmut Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bkrüger Mitglied Konstrukteur

 Beiträge: 51 Registriert: 14.09.2014 Win10 IV2018 Vault2018-WG
|
erstellt am: 20. Mrz. 2017 14:52 <-- editieren / zitieren --> Unities abgeben:          Nur für Ticky72
Hallo Helmut, najaaaa ... also zu Fuß würde ich meinen: Folgende Funktion setzt den übergebenen Wert (lnn könnte man auch als long deklarieren) in "Klartext" um: Code: Function typintext(lnn As CurveTypeEnum) As String Select Case lnn Case kBSplineCurve: typintext = "kBSplineCurve" '5128 Case kCircleCurve: typintext = "kCircleCurve" Case kCircularArcCurve: '5125 typintext = "kCircularArcCurve" Case kEllipseFullCurve: '5126 typintext = "kEllipseFullCurve" Case kEllipticalArcCurve: '5127 typintext = "kEllipticalArcCurve" Case kLineCurve: '5122 typintext = "kLineCurve" Case kLineSegmentCurve: '5123 typintext = "kLineSegmentCurve" Case kPolylineCurve: '5129 typintext = "kPolylineCurve" Case kUnknownCurve: '5121 typintext = "kUnknownCurve" Case Else typintext = "unknown enum" End Select End Function
Dann heißt die debug.print - Zeile:
Code: Debug.Print "Curvetype: " & typintext(oObject.CurveType)
Gruß Boris [Diese Nachricht wurde von bkrüger am 20. Mrz. 2017 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ticky72 Mitglied

 Beiträge: 35 Registriert: 17.02.2016 Inventor 2019 Win7 64Bit
|
erstellt am: 20. Mrz. 2017 19:03 <-- editieren / zitieren --> Unities abgeben:         
Hallo Boris, vielen Dank für die schnelle Antwort. Hat mir sehr weitergeholfen. 'CurveTypeEnum' war für mich das Schlagwort mich mit deinem Quelltext vertiefter auseinanderzusetzen. Hier meine Erkenntnisse (in der Hoffnung, Leser dieses Beitrags hilft es weiter): In der Hilfe 'Inventor API Reference Manual/Enumerators/CurveTypeEnum Enum' finde ich die Werte und Namen. Unter http://adndevblog.typepad.com/manufacturing/2012/07/how-to-use-enumtype-object.html findet sich folgendes Beispiel zum auslesen von Name und Wert:
Code:
Sub GetEnumType() Dim oEnumType As EnumType Set oEnumType = ThisApplication.TestManager.GetEnumType("ObjectTypeEnum") Dim index As Integer index = 0 Do While index < oEnumType.Count Debug.Print oEnumType.ValueName Debug.Print oEnumType.Value oEnumType.MoveNext index = index + 1 Loop End Sub
Als ich in der API Hilfe die Liste der Enumeratoren, das Beispiel und deinen Quelltext gesehen habe, kam in mir der Zwang hoch, folgende kleine Spielerei zu schreiben:
Code:
Sub DEBUGPrint_Function_GetEnumType() Dim sEnum As String 'Hier Enumerator eintragen (Siehe Hilfe Inventor API Reference Manual / Enumerators) sEnum = "CurveTypeEnum" Dim oEnumType As EnumType Set oEnumType = ThisApplication.TestManager.GetEnumType(sEnum) Dim index As Integer oEnumType.Reset index = -1 Dim sName As String Dim sValue As String 'Debug.Print "Function typintext(lnn As " & sEnum & ") As String" Debug.Print "Function typintext(lnn As Long) As String" Debug.Print "Select Case lnn" Do While index < oEnumType.Count sName = oEnumType.ValueName sValue = oEnumType.Value If Not sName = sValue Then Debug.Print "Case " & sName & ":" & " '" & sValue Debug.Print " typintext = " & Chr(34) & sName & Chr(34) End If oEnumType.MoveNext index = index + 1 Loop Debug.Print "Case Else" Debug.Print " typintext = " & Chr(34) & "unknown enum" & Chr(34) Debug.Print "End Select" Debug.Print "End Function" End Sub
Gruß Helmut [Diese Nachricht wurde von Ticky72 am 20. Mrz. 2017 editiert.] [Diese Nachricht wurde von Ticky72 am 20. Mrz. 2017 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |

| |
metalgod Mitglied Technischer Zeichner, Mädchen für alles

 Beiträge: 32 Registriert: 23.09.2015 Win10x64 Prof. Intel Core i7-8700K 3,70GHz, 16GB Ram Inventor Prof. 2018 64-Bit Visual Studio 2015 Express
|
erstellt am: 09. Apr. 2017 11:25 <-- editieren / zitieren --> Unities abgeben:          Nur für Ticky72
Hallo, neulich bin ich auf folgende Funktion gestoßen, vielleicht kann die jemandem behilflich sein: Code: Public Sub TypName() Dim Obj As Object Set Obj = ThisApplication.CommandManager.Pick(kAllEntitiesFilter, "Objekt wählen") Dim S As String: S = TypeName(Obj) Call MsgBox(S, vbOKOnly) End Sub
------------------ alex Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |