PPI Posté(e) le 31 janvier 2008 Posté(e) le 31 janvier 2008 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))
vinz34 Posté(e) le 1 février 2008 Posté(e) le 1 février 2008 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.
PPI Posté(e) le 1 février 2008 Auteur Posté(e) le 1 février 2008 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.
PPI Posté(e) le 1 février 2008 Auteur Posté(e) le 1 février 2008 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 ....
bonuscad Posté(e) le 1 février 2008 Posté(e) le 1 février 2008 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 cerclesLancer é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
PPI Posté(e) le 4 février 2008 Auteur Posté(e) le 4 février 2008 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.
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant