Aller au contenu

Selection de lignes et intersections


Messages recommandés

Posté(e)

Bonjour à tous,

 

voila je veux sélectionner des lignes et et qu'un cercle soit dessiné aux intersections de toutes ces lignes.

Pour la sélection des lignes, pas de prob, pour trouver les intersections pas de prob mais c'est pour prendre la 1ere ligne et le 2eme et qu'il cherche une intersection, alors là !!!!

et je veux qu'il compare toutes les lignes pour trouver toutes les intersections !!!

 

pouvez vous m'aider, svp

 

Merci beaucoup.

ci dessous mon p'tit code ...

c'est au moment du traitement de ma liste de ligne 'ss' que j'ai du mal

 

(princ "\nSélectionner les lignes : ")

(setq ss (ssget '((0 . "line"))))

 

(setq XP1 (car P1));renvoie le X du point1

(setq XP2 (car P2));renvoie le X du point2

(setq YP1 (cadr P1));renvoie le Y du point1

(setq YP2 (cadr P2));renvoie le Y du point2

(setq ZP1 (caddr P1));renvoie le Z du point1

(setq ZP2 (caddr P2));renvoie le Z du point2

 

(setq pt (inters XP1 YP1 ZP1 XP2 YP2 ZP2))

Posté(e)

Salut,

 

Une proposition :

 

(defun c:int (/ ss elist lst l1 i lsti)
 
 (princ "\nSélectionner les lignes : ")
 (setq ss (ssget '((0 . "line"))))
 (repeat (setq n (sslength ss))
   (setq elist (entget (ssname ss (setq n (1- n))))
  lst (cons (list (cdr (assoc 10 elist)) (cdr (assoc 11 elist))) lst)))
 (while (cdr lst)
   (setq l1 (car lst)
  lst (cdr lst))
   (foreach n lst
     (setq i (inters (car l1) (cadr l1) (car n) (cadr n)))
     (if i (setq lsti (cons i lsti))))))

 

Il ne te reste qu'à faire le cercle.

Posté(e)

merci beaucoup vinz34,

 

j'ai bien avancé dans mon schmibilic...

 

j'ai vue qque part sur le forum que l'on peut sélectionner toute les entités passant par un point et seulement un point.

 

en tout cas merci beaucoup.

Posté(e)

j'arrive pas à retrouver le msg !!!

 

Maintenant que je peux trouver tout les pts d'intersection de mes lignes, je voudrais pouvoir sélectionner les 2 lignes qui sont à ce point d'intersection !!!

l'entité ligne 1 soit classé dans une variable et que l'entité 2 soit classé dans une autre variable.

j'avais vu qque chose la dessus mais retrouve plus alors si qqu'un peut m'aider.

 

merci beaucoup ....

Posté(e)

Un bout de code vite écrit et qui devrait fonctionner pour plusieurs type d'entité (cercle arc ligne .....)

 

((lambda ( / lst_pt js e_name obj js_b nb tmp_name tmp_obj vrt_pt pt)
(setq js (ssget) n -1)
(repeat (sslength js)
	(setq e_name (ssname js (setq n (1+ n))))
	(cond
		(e_name
			(setq
				obj (vlax-ename->vla-object e_name)
				js_b js
				nb -1
			)
			(repeat (sslength js_b)
				(setq tmp_name (ssname js (setq nb (1+ nb))))
				(cond
					(tmp_name
						(setq
							tmp_obj (vlax-ename->vla-object tmp_name)
							vrt_pt (vlax-variant-value (vla-IntersectWith obj tmp_obj 0))
						)
						(if (>= (vlax-safearray-get-u-bound vrt_pt 1) 0)
							(setq pt (vlax-safearray->list vrt_pt))
							(if pt
								(if (> (length pt) 3)
									(repeat (/ (length pt) 3)
										(setq lst_pt (cons (list (car pt) (cadr pt) (caddr pt)) lst_pt) pt (cdddr pt))
									)
									(setq lst_pt (cons pt lst_pt))
								)
							)
						)
					)
				)
			)
		)
	)
)
;	(initget 7)
;	(setvar "FILLETRAD" (getdist "Rayon des cercles: ")) (setvar "CMDECHO" 0)
;	(if (and lst_pt (listp lst_pt)) (foreach el lst_pt (command "_.circle" "_none" (trans el 0 1) (getvar "FILLETRAD"))))
lst_pt
))

 

Enlever les semi-colon ";" pour tracer les cercles

Lancer éventuellement (vl-load-com) avant de coller le code

 

[Edité le 1/2/2008 par bonuscad]

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

Posté(e)

merci pour votre aide à tous, j'ai bien avancé.

 

mais maintenant je voudrais sélectionner les 2 lignes créant l'intersection et y coller le SCU.

je n'y arrive pas !!!

pouvez vous m'aider, encore ?

 

merci beaucoup.

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é