Communauté
AutoCAD – tous produits - Français
Bienvenue sur les forums AutoCAD d’Autodesk. Partagez vos connaissances, posez des questions, et explorez les sujets AutoCAD populaires.
annuler
Affichage des résultats de 
Afficher  uniquement  | Rechercher plutôt 
Vouliez-vous dire : 

AutoCAD LT 2024 : Coupure avec décalage des sections coupées

12 RÉPONSES 12
RÉSOLU
Répondre
Message 1 sur 13
be5RK2AV
479 Visites, 12 Réponses

AutoCAD LT 2024 : Coupure avec décalage des sections coupées

be5RK2AV
Participant
Participant

Bonjour, je viens de mettre à jour vers Autocad LT 2024, je chercher une lisp pour séparer une intersection. En décalant de 1.5mm de chaque coté l'intersection.

Si vous pouvez maider sur ce sujet, je ne connait pas du tout les lisp.
En espérant avoir été explicite.

be5RK2AV_0-1688994745579.png

 


Le titre du sujet a été modifié par un modérateur pour faciliter la recherche. Titre original:
Coupure avec décalage des sections coupées

 

0 J'aime

AutoCAD LT 2024 : Coupure avec décalage des sections coupées

Bonjour, je viens de mettre à jour vers Autocad LT 2024, je chercher une lisp pour séparer une intersection. En décalant de 1.5mm de chaque coté l'intersection.

Si vous pouvez maider sur ce sujet, je ne connait pas du tout les lisp.
En espérant avoir été explicite.

be5RK2AV_0-1688994745579.png

 


Le titre du sujet a été modifié par un modérateur pour faciliter la recherche. Titre original:
Coupure avec décalage des sections coupées

 

Balises (1)
12 RÉPONSES 12
Message 2 sur 13
_Steven_
en réponse à: be5RK2AV

_Steven_
Advisor
Advisor

@be5RK2AV  a écrit :

Bonjour, je viens de mettre à jour vers Autocad LT 2024, je chercher une lisp pour séparer une intersection. En décalant de 1.5mm de chaque coté l'intersection.

Si vous pouvez maider sur ce sujet, je ne connait pas du tout les lisp.
En espérant avoir été explicite.

be5RK2AV_0-1688994745579.png

 


Bonjour @be5RK2AV,

Avant d'utiliser un lisp, peut être existe-t-il une commande native à AutoCAD ou AutoCAD LT 2024 pour faire ce que vous souhaitez faire.

 

Que représente la ligne bleue puis la ligne magenta ?

Steven

Ce post vous a été utile ? N'hésitez pas à aimer ce post.
Ce post a-t-il répondu à votre question ? Cliquez sur le bouton APPROUVER LA SOLUTION en dessous de la réponse.



« L’homme de bien n’exige pas de l’autre qu’il soit parfait, il l’aide à accomplir ce qu’il a en lui de meilleur. »
Lao Tseu
0 J'aime


@be5RK2AV  a écrit :

Bonjour, je viens de mettre à jour vers Autocad LT 2024, je chercher une lisp pour séparer une intersection. En décalant de 1.5mm de chaque coté l'intersection.

Si vous pouvez maider sur ce sujet, je ne connait pas du tout les lisp.
En espérant avoir été explicite.

be5RK2AV_0-1688994745579.png

 


Bonjour @be5RK2AV,

Avant d'utiliser un lisp, peut être existe-t-il une commande native à AutoCAD ou AutoCAD LT 2024 pour faire ce que vous souhaitez faire.

 

Que représente la ligne bleue puis la ligne magenta ?

Steven

Ce post vous a été utile ? N'hésitez pas à aimer ce post.
Ce post a-t-il répondu à votre question ? Cliquez sur le bouton APPROUVER LA SOLUTION en dessous de la réponse.



« L’homme de bien n’exige pas de l’autre qu’il soit parfait, il l’aide à accomplir ce qu’il a en lui de meilleur. »
Lao Tseu
Message 3 sur 13
CADaSchtroumpf
en réponse à: be5RK2AV

CADaSchtroumpf
Advisor
Advisor

Bonjour,

J'ai ceci qui fonctionne avec des lignes essentiellement verticales et horizontales...

Cela répond t-il a ta demande?

(defun c:cut_line ( / js_all js_h js_v tmp_js tmp_lst lst_exth lst_extv nb_all name_ent dxf_ent dxf_10 dxf_11 gap nb_v lst_pt_brk v_name dxf_entv lst_int lst_pt_make)
  (princ "\nSélectionner les lignes pour couper les lignes verticales ou horizontales: ")
  (setq js_all (ssget '((0 . "LINE"))) js_h (ssadd) js_v (ssadd) lst_exth nil lst_extv nil)
  (cond
    (js_all
      (repeat (setq nb_all (sslength js_all))
        (setq
          name_ent (ssname js_all (setq nb_all (1- nb_all)))
          dxf_ent (entget name_ent)
          dxf_10 (cdr (assoc 10 dxf_ent))
          dxf_11 (cdr (assoc 11 dxf_ent))
        )
        (cond
          ((equal (cadr (trans dxf_10 0 1)) (cadr (trans dxf_11 0 1)) 1E-5)
            (setq js_h (ssadd name_ent js_h) lst_exth (cons (list dxf_10 dxf_11) lst_exth))
          )
          ((equal (car (trans dxf_10 0 1)) (car (trans dxf_11 0 1)) 1E-5)
            (setq js_v (ssadd name_ent js_v) lst_extv (cons (list dxf_10 dxf_11) lst_extv))
          )
        )
      )
    )
  )
  (cond
    ((and js_h js_v)
      (initget "Verticales Horizontales")
      (if (eq (getkword "\nCouper avec les lignes [Verticales/Horizontales] lines? <Horizontales>: ") "Verticales")
        (setq
          tmp_js js_h
          tmp_lst lst_exth
          js_h js_v
          lst_exth lst_extv
          js_v tmp_js
          lst_extv tmp_lst
        )
        (setq tmp_js nil tmp_lst nil)
      )
      (initget 4)
      (setq gap (getdist (strcat "\nEntrer l'écart? <" (rtos (getvar "USERR3")) ">: ")))
      (if gap (setvar "USERR3" gap))
      (repeat (setq nb_v (sslength js_v))
        (setq
          lst_pt_brk nil
          v_name (ssname js_v (setq nb_v (1- nb_v)))
          dxf_entv (entget v_name)
          dxf_10 (cdr (assoc 10 dxf_entv))
          dxf_11 (cdr (assoc 11 dxf_entv))
          lst_int (vl-remove nil (mapcar '(lambda (x) (inters dxf_10 dxf_11 (car x) (cadr x) T)) lst_exth))
        )
        (foreach xint lst_int
          (if (member xint (apply 'append (if tmp_lst lst_exth lst_extv)))
            (setq lst_int (vl-remove xint lst_int))
          )
        )
        (cond
          (lst_int
            (mapcar
              '(lambda (el)
                (setq
                  lst_pt_brk
                  (cons
                    (polar el (+ (atan (/ (cadr (getvar "UCSXDIR")) (car (getvar "UCSXDIR")))) (if tmp_js 0 (* pi 0.5))) (getvar "USERR3" ))
                    (cons
                      (polar el (+ (atan (/ (cadr (getvar "UCSXDIR")) (car (getvar "UCSXDIR")))) (if tmp_js pi (* pi 1.5))) (getvar "USERR3" ))
                      lst_pt_brk
                    )
                  )
                )
              )
              lst_int
            )
            (setq lst_pt_make (vl-sort (cons dxf_11 (cons dxf_10 lst_pt_brk)) '(lambda (e1 e2) (if tmp_js (< (car e1) (car e2)) (< (cadr e1) (cadr e2))))))
            (while lst_pt_make
              (entmake
                (list
                  (assoc 0 dxf_entv)
                  '(100 . "AcDbEntity")
                  (assoc 67 dxf_entv)
                  (assoc 410 dxf_entv)
                  (assoc 8 dxf_entv)
                  (if (assoc 62 dxf_entv) (assoc 62 dxf_entv) '(62 . 256))
                  (if (assoc 6 dxf_entv) (assoc 6 dxf_entv) '(6 . "BYLAYER"))
                  (if (assoc 48 dxf_entv) (assoc 48 dxf_entv) '(48 . 1.0))
                  (if (assoc 370 dxf_entv) (assoc 370 dxf_entv) '(370 . -1))
                  '(100 . "AcDbLine")
                  (cons 10 (car lst_pt_make))
                  (cons 11 (cadr lst_pt_make))
                  (assoc 210 dxf_entv)
                )
              )
              (setq lst_pt_make (cddr lst_pt_make))
            )
            (entdel v_name)
          )
        )
      )
    )
  )
  (prin1)
)
0 J'aime

Bonjour,

J'ai ceci qui fonctionne avec des lignes essentiellement verticales et horizontales...

Cela répond t-il a ta demande?

(defun c:cut_line ( / js_all js_h js_v tmp_js tmp_lst lst_exth lst_extv nb_all name_ent dxf_ent dxf_10 dxf_11 gap nb_v lst_pt_brk v_name dxf_entv lst_int lst_pt_make)
  (princ "\nSélectionner les lignes pour couper les lignes verticales ou horizontales: ")
  (setq js_all (ssget '((0 . "LINE"))) js_h (ssadd) js_v (ssadd) lst_exth nil lst_extv nil)
  (cond
    (js_all
      (repeat (setq nb_all (sslength js_all))
        (setq
          name_ent (ssname js_all (setq nb_all (1- nb_all)))
          dxf_ent (entget name_ent)
          dxf_10 (cdr (assoc 10 dxf_ent))
          dxf_11 (cdr (assoc 11 dxf_ent))
        )
        (cond
          ((equal (cadr (trans dxf_10 0 1)) (cadr (trans dxf_11 0 1)) 1E-5)
            (setq js_h (ssadd name_ent js_h) lst_exth (cons (list dxf_10 dxf_11) lst_exth))
          )
          ((equal (car (trans dxf_10 0 1)) (car (trans dxf_11 0 1)) 1E-5)
            (setq js_v (ssadd name_ent js_v) lst_extv (cons (list dxf_10 dxf_11) lst_extv))
          )
        )
      )
    )
  )
  (cond
    ((and js_h js_v)
      (initget "Verticales Horizontales")
      (if (eq (getkword "\nCouper avec les lignes [Verticales/Horizontales] lines? <Horizontales>: ") "Verticales")
        (setq
          tmp_js js_h
          tmp_lst lst_exth
          js_h js_v
          lst_exth lst_extv
          js_v tmp_js
          lst_extv tmp_lst
        )
        (setq tmp_js nil tmp_lst nil)
      )
      (initget 4)
      (setq gap (getdist (strcat "\nEntrer l'écart? <" (rtos (getvar "USERR3")) ">: ")))
      (if gap (setvar "USERR3" gap))
      (repeat (setq nb_v (sslength js_v))
        (setq
          lst_pt_brk nil
          v_name (ssname js_v (setq nb_v (1- nb_v)))
          dxf_entv (entget v_name)
          dxf_10 (cdr (assoc 10 dxf_entv))
          dxf_11 (cdr (assoc 11 dxf_entv))
          lst_int (vl-remove nil (mapcar '(lambda (x) (inters dxf_10 dxf_11 (car x) (cadr x) T)) lst_exth))
        )
        (foreach xint lst_int
          (if (member xint (apply 'append (if tmp_lst lst_exth lst_extv)))
            (setq lst_int (vl-remove xint lst_int))
          )
        )
        (cond
          (lst_int
            (mapcar
              '(lambda (el)
                (setq
                  lst_pt_brk
                  (cons
                    (polar el (+ (atan (/ (cadr (getvar "UCSXDIR")) (car (getvar "UCSXDIR")))) (if tmp_js 0 (* pi 0.5))) (getvar "USERR3" ))
                    (cons
                      (polar el (+ (atan (/ (cadr (getvar "UCSXDIR")) (car (getvar "UCSXDIR")))) (if tmp_js pi (* pi 1.5))) (getvar "USERR3" ))
                      lst_pt_brk
                    )
                  )
                )
              )
              lst_int
            )
            (setq lst_pt_make (vl-sort (cons dxf_11 (cons dxf_10 lst_pt_brk)) '(lambda (e1 e2) (if tmp_js (< (car e1) (car e2)) (< (cadr e1) (cadr e2))))))
            (while lst_pt_make
              (entmake
                (list
                  (assoc 0 dxf_entv)
                  '(100 . "AcDbEntity")
                  (assoc 67 dxf_entv)
                  (assoc 410 dxf_entv)
                  (assoc 8 dxf_entv)
                  (if (assoc 62 dxf_entv) (assoc 62 dxf_entv) '(62 . 256))
                  (if (assoc 6 dxf_entv) (assoc 6 dxf_entv) '(6 . "BYLAYER"))
                  (if (assoc 48 dxf_entv) (assoc 48 dxf_entv) '(48 . 1.0))
                  (if (assoc 370 dxf_entv) (assoc 370 dxf_entv) '(370 . -1))
                  '(100 . "AcDbLine")
                  (cons 10 (car lst_pt_make))
                  (cons 11 (cadr lst_pt_make))
                  (assoc 210 dxf_entv)
                )
              )
              (setq lst_pt_make (cddr lst_pt_make))
            )
            (entdel v_name)
          )
        )
      )
    )
  )
  (prin1)
)
Message 4 sur 13
be5RK2AV
en réponse à: _Steven_

be5RK2AV
Participant
Participant

Merci de votre retour, Les lignes représente des tuyauteries sur un schéma PID.

Il y a pas mal de lignes qui s'entrecroisent, est faire des décalages de 1.5 de chaque coté d'une intersection est assez long. Donc comme la version 2024 prend en charge quelque lisp je me demandais si il été possible d'en intégré pour cette tache.

0 J'aime

Merci de votre retour, Les lignes représente des tuyauteries sur un schéma PID.

Il y a pas mal de lignes qui s'entrecroisent, est faire des décalages de 1.5 de chaque coté d'une intersection est assez long. Donc comme la version 2024 prend en charge quelque lisp je me demandais si il été possible d'en intégré pour cette tache.

Message 5 sur 13
be5RK2AV
en réponse à: CADaSchtroumpf

be5RK2AV
Participant
Participant

Merci de votre retour, je suis novice sur le sujet des lisp et ne sais pas comment les lancer, je l'ai bien intégré avec Appload, mais je ne sais pas comment exécuter cette fonction.

Est ce que vous pouvez m'indiquer la procédure svp ?

0 J'aime

Merci de votre retour, je suis novice sur le sujet des lisp et ne sais pas comment les lancer, je l'ai bien intégré avec Appload, mais je ne sais pas comment exécuter cette fonction.

Est ce que vous pouvez m'indiquer la procédure svp ?

Message 6 sur 13
rebcao
en réponse à: be5RK2AV

rebcao
Advisor
Advisor

Bonjour,

J'ai une solution qui permet de ne pas s'occuper des coupures autour des symboles ou des "PONTS" (coupure)...

C'est simplement la manière de créer les BLOCS qui va faire le JOB...

Pourrais-tu publier un extrait et je te fais un exemple. En indiquant pour quelques symboles le périmètre de "coupure" souhaité...

Merci.

Christian


Formateur Indépendant, Consultant, AutoCAD, AutoCAD LT, REVIT MEP, INVENTOR -
www.rebcao.fr

Christian REB

0 J'aime

Bonjour,

J'ai une solution qui permet de ne pas s'occuper des coupures autour des symboles ou des "PONTS" (coupure)...

C'est simplement la manière de créer les BLOCS qui va faire le JOB...

Pourrais-tu publier un extrait et je te fais un exemple. En indiquant pour quelques symboles le périmètre de "coupure" souhaité...

Merci.

Christian


Formateur Indépendant, Consultant, AutoCAD, AutoCAD LT, REVIT MEP, INVENTOR -
www.rebcao.fr

Christian REB

Message 7 sur 13
be5RK2AV
en réponse à: rebcao

be5RK2AV
Participant
Participant

Bonjour, je ne suis pas sur de comprendre.

Les lignes ne sont pas présente dans les bloc, elles représentes des tuyauteries.

La coupure me permettrai d'éviter de faire un décalage de 1.5mm de chaque coté de la ligne, puis un ajustement de la ligne coupé. Lorsque j'ai seulement une dizaine de coupure ce n'est pas gênant, mais avec quelques centaines cela deviens long et fastidieux. Je vous partage un exemple de schéma PID.

0 J'aime

Bonjour, je ne suis pas sur de comprendre.

Les lignes ne sont pas présente dans les bloc, elles représentes des tuyauteries.

La coupure me permettrai d'éviter de faire un décalage de 1.5mm de chaque coté de la ligne, puis un ajustement de la ligne coupé. Lorsque j'ai seulement une dizaine de coupure ce n'est pas gênant, mais avec quelques centaines cela deviens long et fastidieux. Je vous partage un exemple de schéma PID.

Message 8 sur 13
_Steven_
en réponse à: be5RK2AV

_Steven_
Advisor
Advisor

Bonjour @be5RK2AV,

 

Il y aussai la commande native d'AutoCAD, COUPURE.

Elle permet en appelant l'option [Premier point], de spécifier un premier puis un second point pour faire une coupure avec une distance spécifique.

 

COUPRE_ENTRE_2_POINTS.gif

Steven

Ce post vous a été utile ? N'hésitez pas à aimer ce post.
Ce post a-t-il répondu à votre question ? Cliquez sur le bouton APPROUVER LA SOLUTION en dessous de la réponse.



« L’homme de bien n’exige pas de l’autre qu’il soit parfait, il l’aide à accomplir ce qu’il a en lui de meilleur. »
Lao Tseu
0 J'aime

Bonjour @be5RK2AV,

 

Il y aussai la commande native d'AutoCAD, COUPURE.

Elle permet en appelant l'option [Premier point], de spécifier un premier puis un second point pour faire une coupure avec une distance spécifique.

 

COUPRE_ENTRE_2_POINTS.gif

Steven

Ce post vous a été utile ? N'hésitez pas à aimer ce post.
Ce post a-t-il répondu à votre question ? Cliquez sur le bouton APPROUVER LA SOLUTION en dessous de la réponse.



« L’homme de bien n’exige pas de l’autre qu’il soit parfait, il l’aide à accomplir ce qu’il a en lui de meilleur. »
Lao Tseu
Message 9 sur 13
be5RK2AV
en réponse à: _Steven_

be5RK2AV
Participant
Participant

Merci, mais cette méthode ne permet de sélectionner qu'une seule intersection à la fois.

avec un décalage de la ligne verticale et nu ajustement des lignes horizontales je peux faire toute les intersections de la lignes. mais c'est encore trop long...

Mais merci de votre participation, si vous avez d'autre astuce pour m'aider je suis preneur

0 J'aime

Merci, mais cette méthode ne permet de sélectionner qu'une seule intersection à la fois.

avec un décalage de la ligne verticale et nu ajustement des lignes horizontales je peux faire toute les intersections de la lignes. mais c'est encore trop long...

Mais merci de votre participation, si vous avez d'autre astuce pour m'aider je suis preneur

Message 10 sur 13
CADaSchtroumpf
en réponse à: be5RK2AV

CADaSchtroumpf
Advisor
Advisor

@be5RK2AV  a écrit :

Merci de votre retour, je suis novice sur le sujet des lisp et ne sais pas comment les lancer, je l'ai bien intégré avec Appload, mais je ne sais pas comment exécuter cette fonction.

Est ce que vous pouvez m'indiquer la procédure svp ?


Donc si tu as su le charger, la commande CUT_LINE est disponible dans la session et le dessin en cours.

Comment interpréter les lisps?
Généralement les fonctions sont identifiables comme suit:
(defun toto (arg1 arg2 ... / var1 var2 ...) code lisp de la fonction)
Ici il s'agira d'une fonction qui sera appelé de cette façon en ligne de commande ou simplement depuis un code lisp
(toto argument1 argument2)

Il y a aussi cette définition : celle la plus utilisée
(defun C:tata ( .. / var var ..) code lisp)
le C: défini que la fonction sera une commande directement accessible en ligne de commande : TATA
Généralement ces fonctions n'ont pas d'arguments (bien qu'elles peuvent en avoir, mais alors l'appel se ferait comme ceci (C:TATA arg1 arg2 etc...)

et enfin une fonction anonyme sous la forme (lambda (arg1 arg2 ... / var1 var2 ...) code)
Ce genre de fonction sans nom est exécutable qu'une seule fois et n'est pas maintenue en mémoire, pour la relancer il faut la recharger en mémoire.

J'espère que cette brève explication te permettre de comprendre un code lisp pour pouvoir le lancé

0 J'aime


@be5RK2AV  a écrit :

Merci de votre retour, je suis novice sur le sujet des lisp et ne sais pas comment les lancer, je l'ai bien intégré avec Appload, mais je ne sais pas comment exécuter cette fonction.

Est ce que vous pouvez m'indiquer la procédure svp ?


Donc si tu as su le charger, la commande CUT_LINE est disponible dans la session et le dessin en cours.

Comment interpréter les lisps?
Généralement les fonctions sont identifiables comme suit:
(defun toto (arg1 arg2 ... / var1 var2 ...) code lisp de la fonction)
Ici il s'agira d'une fonction qui sera appelé de cette façon en ligne de commande ou simplement depuis un code lisp
(toto argument1 argument2)

Il y a aussi cette définition : celle la plus utilisée
(defun C:tata ( .. / var var ..) code lisp)
le C: défini que la fonction sera une commande directement accessible en ligne de commande : TATA
Généralement ces fonctions n'ont pas d'arguments (bien qu'elles peuvent en avoir, mais alors l'appel se ferait comme ceci (C:TATA arg1 arg2 etc...)

et enfin une fonction anonyme sous la forme (lambda (arg1 arg2 ... / var1 var2 ...) code)
Ce genre de fonction sans nom est exécutable qu'une seule fois et n'est pas maintenue en mémoire, pour la relancer il faut la recharger en mémoire.

J'espère que cette brève explication te permettre de comprendre un code lisp pour pouvoir le lancé

Message 11 sur 13
be5RK2AV
en réponse à: CADaSchtroumpf

be5RK2AV
Participant
Participant

Merci de vos explications, j'ai bien réussi à lancer la lisp et compris cette partie de chargement et nom de la fonction.

Maintenant que la lisp se lance elle ne fait pas ce que je pensais.

Est-ce normal ?

0 J'aime

Merci de vos explications, j'ai bien réussi à lancer la lisp et compris cette partie de chargement et nom de la fonction.

Maintenant que la lisp se lance elle ne fait pas ce que je pensais.

Est-ce normal ?

Message 12 sur 13
CADaSchtroumpf
en réponse à: be5RK2AV

CADaSchtroumpf
Advisor
Advisor
Solution acceptée

D'après votre vidéo:

Votre sélection de départ est incomplète, il faut sélectionner TOUTES les ligne (horizontale ET verticale)

Si d'autre lignes autres que verticale ou horizontale sont sélectionnées, elles ne seront pas prise en compte pour la coupure.

C'est après cette sélection que vous allez décider avec quelles lignes il faut couper (H ou V)

.

D'après votre vidéo:

Votre sélection de départ est incomplète, il faut sélectionner TOUTES les ligne (horizontale ET verticale)

Si d'autre lignes autres que verticale ou horizontale sont sélectionnées, elles ne seront pas prise en compte pour la coupure.

C'est après cette sélection que vous allez décider avec quelles lignes il faut couper (H ou V)

.

Message 13 sur 13
be5RK2AV
en réponse à: CADaSchtroumpf

be5RK2AV
Participant
Participant

Parfait, cela fonctionne, c'est exactement ce que je cherchais merci beaucoup de votre aide

0 J'aime

Parfait, cela fonctionne, c'est exactement ce que je cherchais merci beaucoup de votre aide

Vous n'avez pas trouvé ce que vous recherchiez ? Posez une question à la communauté ou partagez vos connaissances.

Publier dans les forums  

Autodesk Design & Make Report