fiesta13310 Posté(e) le 23 avril 2014 Posté(e) le 23 avril 2014 Bonjour à tous! J,'aimerai savoir si quelqu'un aurait une routine pour marquer les intersetions de lignes ou polylignes? Je m'explique. J'ai toute une façade en panneau de bardage. j'ai déjà fait le calepinage de la façade, et j'ai tracé des axes vertical et horizontal qui déterminent l'emplacement des fixations. Autrement dit, à chaque intersection de ces axes, j'ai un perçage. Mais le problème c'est qu'il y en a énormément des intersections, et surtout je n'ai pas que cette façade à réaliser. J'aurai bien utilisé la fonction réseau, mais comme chaque panneau n'a pas les mêmes dimensions, l'espacement des trous ne sera pas la même non plus. Donc si quelqu'un a une routine qui me permettrait de marquer ces intersetions d'une croix, ou d'un rond... peu importe... en sélectionnant seulement tous mes axes, je suis preneuse. Merci, et bonne journée
lecrabe Posté(e) le 23 avril 2014 Posté(e) le 23 avril 2014 Hello Voici donc une excellente routine de Bill Kramer amelioree par www.cadstudio.cz Cette routine fonctionne avec les entites suivantes (et peut etre d'autres) : Ligne, Arc, Cercle, PolyLigne 2D, Ellipses, Splines Chargement par la commande clavier: APPLOAD ... Commande au clavier : INTLINES Cette routine convient elle a son Altesse Supreme Fiesta13310 ? Bye, lecrabe Autodesk Expert Elite Team
bonuscad Posté(e) le 23 avril 2014 Posté(e) le 23 avril 2014 Bonjours De façon très basique, j'ai fais ceci: ((lambda ( / lst_pt js e_name obj js_b nb tmp_name tmp_obj vrt_pt pt) (vl-load-com) (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) (progn (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 )) Tu peux aussi essayer l'utilitaire Qbrick de Jamal Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
VDH-Bruno Posté(e) le 23 avril 2014 Posté(e) le 23 avril 2014 Bonjour, Donc si quelqu'un a une routine qui me permettrait de marquer ces intersetions d'une croix, ou d'un rond... peu importe... en sélectionnant seulement tous mes axes, je suis preneuse. Sinon sur ce forum, je m’étais également essayé à un problème similaire..http://cadxp.com/topic/33361-lister-les-intersections-d%E2%80%99objets-dun-jeu-de-selection/http://cadxp.com/index.php?/topic/33341-lisp-pour-extraire-les-coordonnees-de-lintersection-des-axes/Lisp Dans ton cas je te propose de symboliser l’intersection par une entité point, dont tu pourras faire varier l’aspect (PDMODE) et la taille (PDSIZE) au moyen des variables AutoCAD Le code principal :(defun c:fiesta () (mapcar '(lambda (pt) (entmake (list '(0 . "POINT") (cons 10 pt)))) (bv:ListInters (ssget))) ) Les routines associées :;; ----------------------------------------------------------------------------- ;; Liste toutes les intersections présentent dans le jeu de sélection ;; (Avec suppression des points en doublons) ;; ----------------------------------------------------------------------------- ;; Argument: Un jeu de sélection du type <Selection set: 2a> ;; Retourne: Une liste de point du type ((x1 y1 z1) (x2 y2 z2) (x3 y3 z3) ...) (defun bv:ListInters (ss / lst sel) (cond (ss (vlax-for obj (setq sel (vla-get-activeselectionset (vla-get-activedocument (vlax-get-acad-object)) ) ) (setq lst (cons obj lst)) ) (vla-delete sel) (remove_doubles (apply 'append (mapcar '(lambda (x) (bv:xyz->Pt (vlax-invoke (car x) 'IntersectWith (cadr x) 0) ) ) (bv:matches lst) ) ) ) ) ) ) ;; Transforme une liste de coordonnées en liste de point ;; Argument: Une liste du type (x1 y1 z1 x2 y2 z2 x3 y3 z3 ...) ;; Retourne: Une liste du type ((x1 y1 z1) (x2 y2 z2) (x3 y3 z3) ...) ;; soit (p1 p2 p3 ...) ;; Exemples : ;; (bv:xyz->Pt '(x1 y1 z1 x2 y2 z2)) -> ((X1 Y1 Z1) (X2 Y2 Z2)) ;; (bv:xyz->Pt '(x1 y1 z1)) -> ((X1 Y1 Z1)) (defun bv:xyz->Pt (L) (if L (cons (list (car L) (cadr L) (caddr L)) (bv:xyz->Pt (cdddr L)) ) ) ) ;; matches (renvoie les combinaisons 2 à 2 sans répétition). ;; Argument: Une liste du type (A B C D) ;; Retourne: Une liste du type ((A B) (A C) (A D) (B C) (B D) (C D)) (defun bv:matches (L) (if (cdr L) (append (mapcar '(lambda (x) (list (car L) x)) (cdr L)) (bv:matches (cdr L)) ) ) ) ;; Extrait du fichier Listes.lsp ;; REMOVE_DOUBLES - Auteur (gile) ;; Suprime tous les doublons d'une liste (defun remove_doubles (lst) (if lst (cons (car lst) (remove_doubles (vl-remove (car lst) lst))) ) ) Voilà maintenant tu n'as plus que l'embarras du choix ;) A+ Apprendre => Prendre => Rendre
fiesta13310 Posté(e) le 23 avril 2014 Auteur Posté(e) le 23 avril 2014 Cette routine convient elle a son Altesse Supreme Fiesta13310 ? ouiiii XD... l'Altesse supreme est servie! :) Bon ben c'est génial tout ça, je vais pouvoir avancer à grand pas! Merci beaucoup encore une fois de votre aide!Bonne journée à tous et à bientôt ! :)
fiesta13310 Posté(e) le 9 avril 2019 Auteur Posté(e) le 9 avril 2019 Bonjour, Je voudrais revenir sur ce sujet, et faire la même chose en insérant un bloc a chaque intersection d'axes.Je suis sous autocad 2019 maintenant :D Est-ce possible? Merci d'avance
fiesta13310 Posté(e) le 9 avril 2019 Auteur Posté(e) le 9 avril 2019 Bonjour, Je voudrais revenir sur ce sujet, et faire la même chose en insérant un bloc a chaque intersection d'axes.Je suis sous autocad 2019 maintenant :D Est-ce possible? Merci d'avance C'est bon j'ai trouvé, J'ai simplement modifier le lisp B) A bientôt!
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