| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Umrissgeometrie einer Fläche (657 mal gelesen)
|
Michael Brix Mitglied
Beiträge: 33 Registriert: 01.11.2000
|
erstellt am: 10. Sep. 2004 10:00 <-- editieren / zitieren --> Unities abgeben:
Hallo, versuche gerade die Umrissgeometrie einer Fläche zu erhalten. Die Anzahl der Kanten kann ich mal gerade auslesen aber dann verlassen sie mich. Vielleicht weiß jemand bescheid über "face.geomtrie" oder einen anderen Weg um die Daten zu erhalten. Gruß Michael Public Sub TestSelection() Dim oSelect As New clsSelect Dim oFace As Face Set oFace = oSelect.Pick(kPartFaceFilter) MsgBox "Anzahl der Kanten: " & oFace.Edges.Count MsgBox oFace.Edges.Type ' Check to make sure an object was selected. If Not oFace Is Nothing Then ' Display the area of the selected face. MsgBox "Face area: " & oFace.Evaluator.Area & " cm^2" End If End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
PaulSchuepbach Moderator Programmierer
Beiträge: 1005 Registriert: 01.10.2003
|
erstellt am: 10. Sep. 2004 10:50 <-- editieren / zitieren --> Unities abgeben: Nur für Michael Brix
|
Michael Brix Mitglied
Beiträge: 33 Registriert: 01.11.2000
|
erstellt am: 10. Sep. 2004 11:02 <-- editieren / zitieren --> Unities abgeben:
Hai Paul, Bei MsgBox oFace.Edges.Type erhalte ich: 1073963056 (Edges collection object.) Bei oFace.Edges(i).Type erhalte ich: 67120176 (Edge object) ich hätte aber gerne die Linien, Kreisbögen etc. Aber wie - *soifz* Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
PaulSchuepbach Moderator Programmierer
Beiträge: 1005 Registriert: 01.10.2003
|
erstellt am: 10. Sep. 2004 11:18 <-- editieren / zitieren --> Unities abgeben: Nur für Michael Brix
|
Michael Brix Mitglied
Beiträge: 33 Registriert: 01.11.2000
|
erstellt am: 10. Sep. 2004 11:30 <-- editieren / zitieren --> Unities abgeben:
Hai Paul, danke für deine schnellen Antworten aber ich bin noch nicht sehr viel weiter. Mit deinem Tipp habe ich jetzt 5124 (kCircleCurve) und 5122 (kLineCurve) ausgelesen. Die Geometrischen Daten wie Radius Startpunkt und Endpunkt etc. bräuchte ich aber. Kannst du noch mal einen draufpacken? Gruß Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Alienware m17x, Win7, Inventor2012
|
erstellt am: 10. Sep. 2004 13:17 <-- editieren / zitieren --> Unities abgeben: Nur für Michael Brix
|
Michael Brix Mitglied
Beiträge: 33 Registriert: 01.11.2000
|
erstellt am: 10. Sep. 2004 13:35 <-- editieren / zitieren --> Unities abgeben:
|
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Alienware m17x, Win7, Inventor2012
|
erstellt am: 10. Sep. 2004 13:47 <-- editieren / zitieren --> Unities abgeben: Nur für Michael Brix
Dann hast du wahrscheinlich die kCircleCurve erwischt. Die haben nicht EndPoint und StartPoint sondern CenterPoint. Irgendwie logisch. Nicht ? Da musst du dann eine Select machen oder If oder, oder, ... Wenn kCircleCurve dann das, und wenn kLineCurve dann das. Nicht zu vergessen aber die B-spline curve, kCircularArcCurve, kEllipseFullCurve, kEllipticalArcCurve, kLineSegmentCurve und kUnknownCurve. Das sind alles "Curve"
------------------ Grüße daywa1k3r Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Michael Brix Mitglied
Beiträge: 33 Registriert: 01.11.2000
|
erstellt am: 13. Sep. 2004 07:15 <-- editieren / zitieren --> Unities abgeben:
Hai daywa1k3r, dein Tipp funktioniert nicht, habe eine Fläche die sich nur aus Linien zusammensetzt und nach curve-Typen selectiert trotzdem erhalte ich folgende Fehlermeldung: Object doesn't support this property or method Der eingesetzte Code: Dim oEdge As Edge For i = 1 To oFace.Edges.Count Set oEdge = oFace.Edges(i) Debug.Print oEdge.CurveType Select Case oEdge.CurveType Case kCircleCurve Debug.Print Str(oEdge.Geometry.Radius) Case kLineCurve Debug.Print Str(oEdge.Geometry.StartPoint) <---- Zeile mit der Fehlermeldung Debug.Print Str(oEdge.Geometry.EndPoint) End Select Next i Gruß
Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Alienware m17x, Win7, Inventor2012
|
erstellt am: 13. Sep. 2004 10:18 <-- editieren / zitieren --> Unities abgeben: Nur für Michael Brix
|
Michael Brix Mitglied
Beiträge: 33 Registriert: 01.11.2000
|
erstellt am: 13. Sep. 2004 13:04 <-- editieren / zitieren --> Unities abgeben:
Hai daywa1k3r, SUPÄÄÄR - jetzt funktioniert es. Und zwar so: Dim oEdge As Edge For i = 1 To oFace.Edges.Count Set oEdge = oFace.Edges(i) Select Case oEdge.CurveType Case kCircleCurve Debug.Print "Kurve Anfang" Debug.Print "Radius : " & oEdge.Geometry.Radius Debug.Print "Start X: " & oEdge.StartVertex.Point.X Debug.Print "Start Y: " & oEdge.StartVertex.Point.Y Debug.Print "End X: " & oEdge.StopVertex.Point.X Debug.Print "End Y: " & oEdge.StopVertex.Point.Y Debug.Print "Kurve Ende" Case kLineCurve Debug.Print "Linie Anfang" Debug.Print "Start X: " & oEdge.StartVertex.Point.X Debug.Print "Start Y: " & oEdge.StartVertex.Point.Y Debug.Print "End X: " & oEdge.StopVertex.Point.X Debug.Print "End Y: " & oEdge.StopVertex.Point.Y Debug.Print "Linie Ende" End Select Next i vielen Dank !!! Gruß Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |