Aller au contenu

Projection de points perpendiculairement sur un axe


Messages recommandés

Posté(e)

Bonjour

 

Je ne sais pas si ça a été déjà abordé mais je ne trouve rien pour le moment!

 

J'ai une polyligne pour axe et des points à côté.

 

Je souhaiterai ramener ces points de manière perpendiculaire sur mon axe.

 

Cela peut-il être possible sans rentrer dans quelque chose de complexe et long?

 

Pour le moment je n'arrive pas à voir par quel bout prendre ce problème avant de me lancer dans un lisp!

 

Comment aborderiez-vous la chose?

 

Merci pour vos lumières ;)

 

Py

Posté(e)

Dans l'aide aux développeurs, les fonctions vl-*, vlax-* et vlr-* sont dans AutoLISP Reference > AutoLISP Functions > V Functions.

 

Pour les fonction vla-*, il faut regarder dans ActiveX and VBA Reference ou utiliser Ctrl+F1. L'aide pour ces fonctions (en fait objets, méthodes, propriétés) n'existe plus dans A2011.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

J'ai une polyligne pour axe et des points à côté.

 

Je souhaiterai ramener ces points de manière perpendiculaire sur mon axe.

 

Et dans l'autre sujet:

 

un miroir sur une série de point et ce par rapport à une polyligne

 

Bien que la démarche soit similaire voici,

sans rentrer dans quelque chose de complexe et long

un code répondant à la seconde question. Pas tester en profondeur, mais le principe est là.

 

(vl-load-com)
(defun c:mirr_point ( / js obj_vla e_name js_pt n l_dxf pt pt_proj pt_new)
(princ "\nChoix de la polyligne représentant l'axe mirroir.")
(while (null (setq js (ssget "_+.:E:S" '((0 . "LWPOLYLINE")))))
	(princ "\nCe n'est pas un objet valable!")
)
(setq obj_vla (vlax-ename->vla-object (setq e_name (ssname js 0))))
(redraw e_name 3)
(princ "\nChoix des points a reporter symétriquement.")
(while (null (setq js_pt (ssget '((0 . "POINT")))))
	(princ "\nCe ne sont pas des points!")
)
(redraw e_name 4)
(repeat (setq n (sslength js_pt))
	(setq
		pt (cdr (assoc 10 (setq l_dxf (entget (ssname js_pt (setq n (1- n)))))))
		pt_proj (vlax-curve-getClosestPointTo obj_vla pt)
		pt_new (polar pt (angle pt pt_proj) (* (distance (list (car pt) (cadr pt)) (list (car pt_proj) (cadr pt_proj))) 2.0))
		pt_new (list (car pt_new) (cadr pt_new) (caddr pt))
	)
	(foreach n l_dxf
		(if (member (car n) '(-1 -2 5 330))
			(setq l_dxf (vl-remove n l_dxf))
		)
	)
	(entmake (subst (cons 10 pt_new) (assoc 10 l_dxf) l_dxf))
	(grdraw (trans pt 0 1) (trans pt_new 0 1) 3 1)
)
(prin1)
)

 

Libre à toi d'agrémenter la procédure...

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité