Aller au contenu

Messages recommandés

Posté(e)

Bonjour ,

 

j ai obtenu un dessin avec des lignes séparées j aimerais savoir s'il existe une possibilité de les reunir

 

Automatiquement

post-36320-0-22295900-1370445372_thumb.jpg

En devenant sincère, l'amour devient généreux.

 

Autocad Map 2015 Covadis V16  et Mensura V9

MacBook Pro 2019

Win10 64 bits

Posté(e)

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.

Posté(e)

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élection

puis triera les lignes un ordre 1 2 3 4 .. en fonction des valeur X

sachant que

la 1 se termine par le plus petit X

la 2 sera celle qui commence par l'X arrivant dans la liste

puis 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

Posté(e)

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

Posté(e)

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)
)

Posté(e)

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

Posté(e)

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

Posté(e)

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

Posté(e)

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

Posté(e)

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.

Posté(e)

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. :rolleyes:

 

A+

Apprendre => Prendre => Rendre

Posté(e)

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. :rolleyes:

 

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.

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é