dessiner la symétrie d'un point par rapport à une ligne. [VBA Autocad] - VB/VBA/VBS - Programmation
Marsh Posté le 04-02-2011 à 13:27:15
voila un premier jet du programme... je bloque pour la suite
Sub fonction_miroir()
Dim Pt1 As Variant, Pt2 As Variant, Pt3 As Variant, angle1 As Variant
Dim Ligne1 As AcadLine
Dim Point1 As ACAD_POINT
Pt1 = ThisDrawing.Utility.GetPoint(, "Entrer le point 1: " )
Pt2 = ThisDrawing.Utility.GetPoint(, "Entrer le point 2: " )
Pt3 = ThisDrawing.Utility.GetPoint(Pt2, "Entrer le point 3: " )
'angle1 = ThisDrawing.Utility.AngleToString(
Set Point1 = ThisDrawing.ModelSpace.AddPoint(Pt1)
Set Ligne1 = ThisDrawing.ModelSpace.AddLine(Pt2, Pt3)
End Sub
Function Distance1(Pt1, Pt2) As Double
Distance1 = Sqr((Pt2(0) - Pt1(0)) ^ 2 + (Pt2(1) - Pt1(1)) ^ 2 + (Pt2(2) - Pt1(2)) ^ 2)
End Function
Function Distance2(Pt1, Pt3) As Double
Distance2 = Sqr((Pt3(0) - Pt1(0)) ^ 2 + (Pt3(1) - Pt1(1)) ^ 2 + (Pt3(2) - Pt1(2)) ^ 2)
End Function
Function Distance3(Pt2, Pt3) As Double
Distance3 = Sqr((Pt3(0) - Pt2(0)) ^ 2 + (Pt3(1) - Pt2(1)) ^ 2 + (Pt3(2) - Pt2(2)) ^ 2)
End Function
Marsh Posté le 22-02-2011 à 18:37:19
D'abord, tu n'as pas besoin de faire 3 fonctions pour calculer les distances, une seule suffi !
|
Utilisation :
Sub CalculerDistance() |
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).
Marsh Posté le 10-03-2011 à 11:23:20
désolé pour la réponse tardive, je passe une période de partiel intense! j'ai bien réussi a faire la symétrie grâce au produit des déterminant! Merci beaucoup pour ton aide. au passage ton blog est sympa
cordialement
Stepos
Marsh Posté le 04-02-2011 à 13:25:52
Bonjour,
j'ai besoin d'aide pour un projet personnel.
je souhaiterai écrire un programme permettant de dessiner le symétrique d'un point par rapport à une ligne sans passer par la fonction miroir d'autocad.
Voila le sujet pour avoir plus d'information...
Saisies utilisateur :
P1 Point dont on doit calculer le symétrique
P2 et P3, deux points de la ligne de symétrie
Résultat : P4
Algorithme :
Déterminer l’orientation du segment P2,P3
Calculer les distances P1P2, P1P3 et P2P3
Ecrire Pythagore pour chaque triangle P1HP2 et P1HP3
Ecrire l’équation du 2nd degré traduisant que P2P3=P2H+HP3
En déduire le distance P1H en résolvant cette équation du 2nd degré, puis en déduire
le symétrique P4 de P1
Merci d'avance de votre aide qui me sera très très précieuse!!!