| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY bietet das umfangreichste Ökosystem von B2B als auch B2C-Lösungen für IT-Akteure auf dem Markt, eine Pressemitteilung
|
Autor
|
Thema: Punkte und Vektoren (1249 mal gelesen)
|
Peter Schriebl Mitglied selbstständig
Beiträge: 13 Registriert: 16.10.2010 Windows XP Autocad 2009 Visual Studio 2010 Express
|
erstellt am: 09. Dez. 2010 20:06 <-- editieren / zitieren --> Unities abgeben:
Hallo Forum ! Ich doktere nun schon länger an folgender Problematik herum: Ich möchte zB.zu einem Punkt (Point3d,Point3D) einen Vektor (Vector3d,Vector3D)addieren und wieder einen Punkt herausbekommen. Da gibt es eine Menge toller Vector-Methoden in der Klasse "System.Windows.Media.Media3D" aber der Zugriff endet immer mit der Fehlermeldung "Nicht erlaubte Umwandlung !" Sind die Autcad Point(s)3d bzw.Vector(s)3d etwa nicht mit denen von Microsoft kompatibel ?? Anbei ein nicht funktionierendes Codebeispiel: Imports System.Windows.Media.Media3D Module Mod6_Vektorfunktionen Function FC_PktPlusVekt(ByVal Punkt1, ByVal Vektor) As Vector3D Dim Punkt2 As Point3D Punkt2 = Point3D.Add(Punkt1, Vektor) Return Punkt2 End Function End Module Wer weiß Rat ?? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 09. Dez. 2010 20:38 <-- editieren / zitieren -->
Hi, >> Sind die Autcad Point(s)3d bzw.Vector(s)3d etwa nicht mit denen von Microsoft kompatibel ?? Zumindest nicht (mit denen aus Namespace xxx.Media.Media3D) voneinander vererbt, damit mal nicht direkt konvertierbar. Du hast aber bei AutoCAD auch einen Namespace Autodesk.AutoCAD.Geometry, mit diesen lassen sich Vektorrechnungen hervorragend bewerkstelligen. - alfred - ------------------ www.hollaus.at |
Peter Schriebl Mitglied selbstständig
Beiträge: 13 Registriert: 16.10.2010 Windows XP Autocad 2009 Visual Studio 2010 Express
|
erstellt am: 09. Dez. 2010 21:17 <-- editieren / zitieren --> Unities abgeben:
Hallo Alfred ! Im angeführten Namespace kann ich keine Methode finden, die Vektoren und auch Punkte verabeiten kann, obwohl ein Punkt ja auch nur ein (Orts)Vektor ist oder besser gesagt von einem Ortsvektor definiert wird. Auch sind die Vektor-Methoden dort eher sehr eingeschränkt vorhanden. Frage: Gibt es vielleicht eine geeignete Typenumwandlung ähnlich "CType" ?? Grüße Peter Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 09. Dez. 2010 21:22 <-- editieren / zitieren -->
Hi, sowohl Geometry.Point3D wie auch Geometry.Vector3D können z.B. mit '+' gerechnet werden. Von den Methoden, die eingebaut sind, welche gehen Dir denn ab? Für mich hat's bisher (2D und 3D) gereicht. Typumwandlung von/zu Media3D.xxx kannst Du Dir ja selbst als Funktion machen. CType bzw. TryCast ==> nee. - alfred - ------------------ www.hollaus.at |
Peter Schriebl Mitglied selbstständig
Beiträge: 13 Registriert: 16.10.2010 Windows XP Autocad 2009 Visual Studio 2010 Express
|
erstellt am: 09. Dez. 2010 22:05 <-- editieren / zitieren --> Unities abgeben:
Hallo Alfred! Das was mir dzt.am meisten abgeht ist, dass ich von einem Ausgangspunkt P1 durch zB.Addition eines Vektors V1 nicht unmittelbar zum neugesuchten Punkt P2 kommen kann. Ich brauch das zum verschobenen Einfügen von Blöcken. Natürlich könnte ich den Block auch nach dem Einfügen verschieben, aber das ist nicht so klass ! Grüße Peter Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 09. Dez. 2010 22:41 <-- editieren / zitieren -->
Hi, vielleicht verstehe ich nur falsch. Was fehlt bei diesem Beispiel:
Code: Dim tPnt As Geometry.Point3d = New Geometry.Point3d(1, 1, 1) Dim tVec As Geometry.Vector3d = New Geometry.Vector3d(2, 2, 2) Dim tRes As Geometry.Point3d = tPnt + tVec
Ein Punkt PLUS ein Vektor ergibt neuen Punkt, das wär's doch, oder? - alfred - ------------------ www.hollaus.at |
Peter Schriebl Mitglied selbstständig
Beiträge: 13 Registriert: 16.10.2010 Windows XP Autocad 2009 Visual Studio 2010 Express
|
erstellt am: 10. Dez. 2010 15:24 <-- editieren / zitieren --> Unities abgeben:
Hallo Alfred ! Ersteinmal danke für die schnelle Hilfe ! Dein Codebeispiel ist genau das was ich brauche: Addition eines Vektors zu einem Punkt mit Resultat Punkt. Aber: Bei mir funktioniert das nicht. Es kommt die Fehlermeldung "Die angegebene Umwandlung ist ungültig." Auch wenn ich sortenreine Acad-Punkte und Vektoren verwende: Select Case Bezug Case "innen" BezVekt = New Vector3d(a , b , 0) Pkt1= Pkt1 + BezVekt '... hier Umwandlungsfehler !! Case "mitte" ..... End Select Anmerkung: Vektor BezVekt ist im Modul deklariert, Punkt Pkt1 wird als Parameter in die Sub-Prozedur übergeben. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Peter Schriebl Mitglied selbstständig
Beiträge: 13 Registriert: 16.10.2010 Windows XP Autocad 2009 Visual Studio 2010 Express
|
erstellt am: 10. Dez. 2010 16:41 <-- editieren / zitieren --> Unities abgeben:
Hallo ! Ich habe den Fehler gefunden: Der Punkt-Parameter Pkt1 muß an die Sub-Prozedur als Point3d typisiert übergeben werden da er ansonsten nicht als solcher erkannt wird und bei der Addition mit dem Vektor die Fehlermeldung "Ungültige Umwandlung" ausgelöst wird. Grüße Peter Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |