D'abord, tu n'as pas besoin de faire 3 fonctions pour calculer les distances, une seule suffi !
Function Distance2Pts(Pt1, Pt2) As Double
Distance2Pts = Sqr((Pt2(0) - Pt1(0)) ^ 2 + (Pt2(1) - Pt1(1)) ^ 2 + (Pt2(2) - Pt1(2)) ^ 2)
End Function |
Utilisation :
Sub CalculerDistance()
Point1 = ThisDrawing.Utility.GetPoint(, "Entrer le point 1: " )
Point2 = ThisDrawing.Utility.GetPoint(, "Entrer le point 2: " ) Point3 = ThisDrawing.Utility.GetPoint(, "Entrer le point 3: " )
msgbox("La distance totale cumulée des points est : " & distance2Pts(Point1, Point2)) + distance2Pts(Point3, Point2))
End Sub |
Ensuite, pour faire ta symétrie, ça serait plus simple de passer par le produit des déterminants entre le vecteur V1 définissant ton axe de symétrie et le vecteur V2 défini par le point sélectionné et le projeté de ce point sur l'axe de symétrie : le point symétrisé sera le point projeté - V2
Ca fonctionnera en 3D, je sais, je l'ai déjà fait mais je vais te laisser chercher . C'est pas bien compliqué
Tu peux aussi utiliser le système de coordonnés utilisateur, mais ça fait utiliser des fonctions que je trouve pas faciles à utiliser, passer par le solution du calcul vectoriel est plus simple à mon avis.
Tu peux jeter un coup d'œil sur les exemples que j'ai mis sur mon blog consacré à VBA et AutoCAD :
http://autocadvba.canalblog.com/ar [...] 41514.html
Ça fonctionne en 2D, mais tu ne devrais pas avoir de difficulté à adapter ça en 3D (à partir du moment où tu restes en SCG).
Message édité par otobox le 11-09-2011 à 17:34:10
---------------
OtObOxBlOg - - - Etre seul à avoir tort c'est plus difficile, mais c'est bien plus beau que d'avoir raison avec une bande de cons