Maxime85 Posté(e) le 5 juin 2013 Posté(e) le 5 juin 2013 Bonjour , j ai obtenu un dessin avec des lignes séparées j aimerais savoir s'il existe une possibilité de les reunir Automatiquement En devenant sincère, l'amour devient généreux. Autocad Map 2015 Covadis V16 et Mensura V9 MacBook Pro 2019 Win10 64 bits
Steven Posté(e) le 5 juin 2013 Posté(e) le 5 juin 2013 Salut A part les déplacer une par une de manière à les mettre les une derrière les autres et ensuite utiliser la commande Joindre, je ne vois pas comment toutes les réunir en une seule commande. Steven________________________________________ Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD. Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD. En rêve; AutoCAD sous Linux.
didier Posté(e) le 5 juin 2013 Posté(e) le 5 juin 2013 coucou si les lignes que tu nous montres respectent certaines conditions (pas facile à vérifier)je pense à relier les lignes dans le sens des X (ou des Y) en faisant un lisp qui fera un jeu de sélectionpuis triera les lignes un ordre 1 2 3 4 .. en fonction des valeur Xsachant quela 1 se termine par le plus petit Xla 2 sera celle qui commence par l'X arrivant dans la listepuis faire une ligne entre la 1 et la 2 et ainsi de suite mais ces conditions sont pas faciles à vérifier et surtout si elles se chevauchent (silhouette en Z) alors là c'est perdu amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
Maxime85 Posté(e) le 5 juin 2013 Auteur Posté(e) le 5 juin 2013 Bonsoir Didier, je suis preneur du Lisp c' est ce donc j ai pensé dés le départ mais je me suis dit peu t' être il existe une commande Autocad pouvant le faire Merci d' avance Cordialement En devenant sincère, l'amour devient généreux. Autocad Map 2015 Covadis V16 et Mensura V9 MacBook Pro 2019 Win10 64 bits
bryce Posté(e) le 6 juin 2013 Posté(e) le 6 juin 2013 Bonjour, Un p'tit vite fait:(defun C:RELIE ( / ss i ligne sp ep pts ) (if (setq ss (ssget '((0 . "LINE")))) (progn (repeat (setq i (sslength ss)) (setq ligne (entget (ssname ss (setq i (1- i)))) sp (cdr (assoc 10 ligne)) ep (cdr (assoc 11 ligne)) ) (if (< (car sp) (car ep)) (setq pts (cons (list sp ep) pts)) (setq pts (cons (list ep sp) pts)) ) ) ; repeat (setq ss nil pts (vl-sort pts '(lambda (a b ) (< (caar a) (caar b )))) ) (repeat (1- (length pts)) (entmake (list (cons 0 "LINE") (cons 10 (cadar pts)) (cons 11 (caadr pts)))) (setq pts (cdr pts)) ) ; repeat ) ; progn ) ; if ss (princ) ) Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
didier Posté(e) le 6 juin 2013 Posté(e) le 6 juin 2013 coucou pas mieux. amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
VDH-Bruno Posté(e) le 6 juin 2013 Posté(e) le 6 juin 2013 Bonjour,j ai obtenu un dessin avec des lignes séparées j aimerais savoir s'il existe une possibilité de les reunir Automatiquement Très rapidement dans le même esprit que le code de Bryce, mais en donnant un tout autre sens au mot REUNIR… (Pour aller dans le sens de Steven) (defun C:REUNIE (/ ss i dxf p10 p11 ent deplacement lst) (if (setq ss (ssget '((0 . "LINE")))) (progn (repeat (setq i (sslength ss)) (setq dxf (entget (setq ent (ssname ss (setq i (1- i))))) p10 (cdr (assoc 10 dxf)) p11 (cdr (assoc 11 dxf)) ) (if (< (car p10) (car p11)) (setq lst (cons (list p10 p11 ent) lst)) (setq lst (cons (list p11 p10 ent) lst)) ) ) ; repeat (setq lst (vl-sort lst '(lambda (x1 x2) (< (caar x1) (caar x2))))) (setq deplacement '(0.0 0.0 0.0)) (repeat (length lst) (setq dxf (entget (caddar lst)) dxf (subst (cons 10 (mapcar '- (caar lst) deplacement)) (assoc 10 dxf) dxf) dxf (subst (cons 11 (mapcar '- (cadar lst) deplacement)) (assoc 11 dxf) dxf) lst (cdr lst) deplacement (mapcar '- (caar lst) (cdr (assoc 11 (entmod dxf)))) ) ) ) ) (princ) ) Nota: Pour celui qui veut aller plus loin, je pense qu’il y des idées à piocher dans le chalenge n°8…http://cadxp.com/index.php?/topic/14961-challenge-8-ou-le-jeu-des-dominos/ A+ Apprendre => Prendre => Rendre
Eric Posté(e) le 6 juin 2013 Posté(e) le 6 juin 2013 Sinon sans lisp on peut aussi faire ceci: peditmultipleon choisit les ligneson répond oui à la commande, convertir les lignes en polylignesjoindretype de jointureajouterpuis mettre une distance Voila Eric est formateur, revendeur sur AutoCAD LT, DraftSight, ZWCAD, SketchUp et PDF2CAD
Maxime85 Posté(e) le 6 juin 2013 Auteur Posté(e) le 6 juin 2013 Bonjour , Merci pour ces explications Cordialement En devenant sincère, l'amour devient généreux. Autocad Map 2015 Covadis V16 et Mensura V9 MacBook Pro 2019 Win10 64 bits
VDH-Bruno Posté(e) le 6 juin 2013 Posté(e) le 6 juin 2013 Re, Bonjour , Merci pour ces explications Cordialement Hé donc au final juste pour savoir, ces lignes il fallait les RELIER comme l’indiquait le titre du poste, ou les REUNIR comme indiqué dans le corps de ton message. ;) A+ Apprendre => Prendre => Rendre
lecrabe Posté(e) le 6 juin 2013 Posté(e) le 6 juin 2013 Hello Mais NON, il y a beaucoup plus simple, tu changes le type de ligne de CACHE (ou HIDDEN) a CONTINUOUS ! lecrabe Autodesk Expert Elite Team
Steven Posté(e) le 6 juin 2013 Posté(e) le 6 juin 2013 Bonjour, Très rapidement dans le même esprit que le code de Bryce, mais en donnant un tout autre sens au mot REUNIR… (Pour aller dans le sens de Steven) (defun C:REUNIE (/ ss i dxf p10 p11 ent deplacement lst) (if (setq ss (ssget '((0 . "LINE")))) (progn (repeat (setq i (sslength ss)) (setq dxf (entget (setq ent (ssname ss (setq i (1- i))))) p10 (cdr (assoc 10 dxf)) p11 (cdr (assoc 11 dxf)) ) (if (< (car p10) (car p11)) (setq lst (cons (list p10 p11 ent) lst)) (setq lst (cons (list p11 p10 ent) lst)) ) ) ; repeat (setq lst (vl-sort lst '(lambda (x1 x2) (< (caar x1) (caar x2))))) (setq deplacement '(0.0 0.0 0.0)) (repeat (length lst) (setq dxf (entget (caddar lst)) dxf (subst (cons 10 (mapcar '- (caar lst) deplacement)) (assoc 10 dxf) dxf) dxf (subst (cons 11 (mapcar '- (cadar lst) deplacement)) (assoc 11 dxf) dxf) lst (cdr lst) deplacement (mapcar '- (caar lst) (cdr (assoc 11 (entmod dxf)))) ) ) ) ) (princ) ) Nota: Pour celui qui veut aller plus loin, je pense qu’il y des idées à piocher dans le chalenge n°8…http://cadxp.com/ind...eu-des-dominos/ A+ Salut VDH-Bruno. Je pensais effectivement à ça :) Toutefois, est-il possible de faire en sorte de choisir la ligne sur laquelle on souhaite réunir les autres lignes et les joindre directement?Par contre, ce qui est bizarre, c'est que lorsque qu'on annule la commande "reunie", la ligne en biais disparaît :blink: Steven________________________________________ Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD. Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD. En rêve; AutoCAD sous Linux.
VDH-Bruno Posté(e) le 6 juin 2013 Posté(e) le 6 juin 2013 Salut,Je pensais effectivement à ça Toutefois, est-il possible de faire en sorte de choisir la ligne sur laquelle on souhaite réunir les autres lignes et les joindre directement?Oui c’est possible (j’y avais également pensé, mais manque de temps), maintenant si tu es intéressé, je verrais en fonction de mes disponibilités, si je me dégage un peu de temps je le ferai. Par contre, ce qui est bizarre, c'est que lorsque qu'on annule la commande "reunie", la ligne en biais disparaît Et non c’est pas bizarre, c’est normale, je ne sais pas si tu causes lisp mais c’est un cas d’école avec entmod et entmake, en fait _undo/annuler, annule la dernière commande mais dans mon code (comme dans celui de Bryce) nous n’avons pas utilisé l’instruction command, donc ta commande d’annulation vas chercher l’instruction commande antérieur au lisp (dans ton cas ta ligne biaise est certainement la dernière dessiné). Si tu fais un pan ou un zoom avant de lancer le lisp c’est cette dernière commande qui sera annulé et plus ta ligne. C’est pourquoi le "lispeur" moins pressé insère souvent une marque d'annulation dans son code du type (command "_.undo" "_mark") ou son équivalent en Vlisp (vla-startundomark (vla-get-activedocument (vlax-get-acad-object))) plus propre à l’affichage, cela pas seulement pour annuler un groupe de commande mais aussi pour s’assurer que la commande annuler ne puisse remonter au-delà de la fonction lisp. En conclusion, tu as raison cette négligence n'est pas normale. A+ Apprendre => Prendre => Rendre
Steven Posté(e) le 6 juin 2013 Posté(e) le 6 juin 2013 Et non c’est pas bizarre, c’est normale, je ne sais pas si tu causes lisp mais c’est un cas d’école avec entmod et entmake, en fait _undo/annuler, annule la dernière commande mais dans mon code (comme dans celui de Bryce) nous n’avons pas utilisé l’instruction command, donc ta commande d’annulation vas chercher l’instruction commande antérieur au lisp (dans ton cas ta ligne biaise est certainement la dernière dessiné). Si tu fais un pan ou un zoom avant de lancer le lisp c’est cette dernière commande qui sera annulé et plus ta ligne. C’est pourquoi le "lispeur" moins pressé insère souvent une marque d'annulation dans son code du type (command "_.undo" "_mark") ou son équivalent en Vlisp (vla-startundomark (vla-get-activedocument (vlax-get-acad-object))) plus propre à l’affichage, cela pas seulement pour annuler un groupe de commande mais aussi pour s’assurer que la commande annuler ne puisse remonter au-delà de la fonction lisp. En conclusion, tu as raison cette négligence n'est pas normale. A+ Non, je ne cause pas la lisp :P, Celà dit je vois à peu près où se trouve les codes dont tu parles maisle truc, c'est que quand j'essaye de déchiffrer un lisp, j'ai des spirales dans les yeux :P Steven________________________________________ Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD. Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD. En rêve; AutoCAD sous Linux.
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