Aller au contenu

Sélection à l\'exxtérieur d\'une polyligne


Messages recommandés

Posté(e)

Bonjour,

 

J'ai déjà posté cette question et j'aimerai savoir si pour les polylignes courbes il n'y a pas de solutions, je n'ai pas eu de réponses la-dessus.

 

Merci beaucoup

Posté(e)

Salut Miamar,

 

J'ai planché un peu sur ce ce genre de fonction (un peu similiaire à la fonction EXTRIM des ExpressTools)

 

Voici le code qu'il en résulte:

Est-ce une bonne approche?, je n'en sais rien !

Si tu veux t'en inspirer et le modifier.....

 

(defun c:plsel ( / )
(while (null (setq ent (entsel "\nChoix de la Polyligne: "))))
(setq typent (cdr (assoc 0 (setq dxf_ent (entget (car ent))))))
(cond
	((or (eq typent "LWPOLYLINE") (eq typent "POLYLINE"))
		(vl-load-com)
		(setq
			obj_vlax (vlax-ename->vla-object (car ent))
			param_start (vlax-curve-getStartParam obj_vlax)
			param_end (vlax-curve-getEndParam obj_vlax)
			perim_obj (vlax-curve-getDistAtParam obj_vlax (+ param_start param_end))
			pt_start (vlax-curve-getStartPoint obj_vlax)
			pt_end (vlax-curve-getEndPoint obj_vlax)
		)
		(initget 6)
		(setq
			res_track (getdist (cadr ent) (strcat "\nDistance de résolution<" (rtos (/ perim_obj 100.0)) ">: "))
			last_e (entlast)
			old_osmd (getvar "osmode")
			old_pdmd (getvar "pdmode")
		)
		(if (not res_track) (setq res_track (/ perim_obj 100.0)))
		(setq l_pt (list pt_start) lg 0.0)
		(while (< (+ lg res_track) perim_obj)
			(setq l_pt (cons (vlax-curve-getPointAtDist obj_vlax (setq lg (+ lg res_track))) l_pt))
		)
		(setq l_pt (cons pt_end l_pt))
		(command "_.erase" (ssget "_WP" l_pt) "")
		(setq n (float (length l_pt)))
		(command "_.pline" (mapcar 'command l_pt))
		(setq e_tmp (entlast))
		(command "_.offset" (/ res_track 2.0) e_tmp 
			(list (/ (apply '+ (mapcar 'car l_pt)) n) (/ (apply '+ (mapcar 'cadr l_pt)) n))
			""
		)
		(setq l_fence (mapcar 'cdr (vl-remove-if '(lambda (x) (/= (car x) 10)) (entget (entlast)))))
		(entdel (entlast))
		(entdel e_tmp)
		(command "_.trim" ent "" (ssget "_F" l_fence) "")
	)
)
(prin1)
)

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

Posté(e)

ça marche pas tout à fait, mais l'idée est peut être à explorer, quoi que cette question de dégré de précision n'est pas une bonne idée. il y a peut être mieux à explorer. Serge Camiré a fait une qui marche bien pour les polylignes rectilignes, mais elle ne prend pas en compte les arcs et les courbes. J'ai lu dans un de ses messages qu'il en avait fait une pour les courbes aussi mais je ne sais pas où.

 

Bonne continuation

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é