Aller au contenu

LIsp pour raccord à 45


Messages recommandés

Posté(e)

Bonjour,

 

Je cherche un lisp me permettant de faire des raccords à 45° sur des schémas d'eaux usées.

Nous utilisons un petit addin (CADPROFI) mais il crée des raccords en TE.

J'ai donc besoin d'un lisp qui me permet de sélectionner une ligne 1 qui se raccorde à une ligne 2 et qui insère une ligne à 45° sans couper la ligne 2 (voir image)

J'ai bien lisp qui s'appelle RRX mais il ne fonctionne pas.

 

Merci.

post-16556-0-24052400-1608287285_thumb.jpg

Modeler Revit MEP - Référent BIM

Revit MEP - Navisworks - Magicad

Autocad MEP 2018 (mais plus beaucoup)

Posté(e)

Le voila :

(defun c:rrx (/ sel1 sel2 *error* dxfpline marque)
   (defun *error* (msg)
     (ai_sysvar nil)
     (if msg
       (princ (strcat "\n*Abandon* " msg))
     )
     (princ)
   )
   (or *ecart* (setq *ecart* (getvar 'CHAMFERA)))
   (setq *ecart* (cond ((getdist (strcat "\nSpécifiez l'écart à conserver entre les objets <" (rtos *ecart*) ">: ")))
                       (*ecart*)
                 )
   )
   (ai_sysvar (list '("CMDECHO" . 0) 
                    '("TRIMMODE" . 0) 
                    '("CHAMMODE" . 0)
                    (cons "CHAMFERA" *ecart*) 
                    (cons "CHAMFERB" *ecart*) 
              )
   )
   (if (setq sel1 (entsel "\nSélectionnez l'objet à prolonger: "))
     (if (setq sel2 (entsel "\nSélectionnez le second objet: "))
       ;; si le second objet est une pline => svg pline
       (progn (if (= "LWPOLYLINE" (cdr (assoc 0 (setq dxfpline (entget (car sel2))))))
                (progn (setq marque (entlast))
                       (command-s "_explode" sel2 "")
                       (setq sel2 (nentselp (osnap (cadr sel2) "_near")))
                )
              )
              (command-s "chamfer" sel1 sel2)
              (ai_sysvar '(("TRIMMODE" . 1) ("FILLETRAD" . 0)))
              (command-s "fillet" sel1 "" (entlast))
              ;; si marque  => restore pline
              (if marque
                (progn ((if (= "LWPOLYLINE" (cdr (assoc 0 (entget (car sel1)))))
                          list
                          entdel
                        )
                         (while (setq marque (entnext marque)) (entdel marque))
                       )
                       (entmake dxfpline)
                )
              )
       )
     )
   )
   (*error* nil)
 )

Modeler Revit MEP - Référent BIM

Revit MEP - Navisworks - Magicad

Autocad MEP 2018 (mais plus beaucoup)

Posté(e)

Hello

 

Voir ta routine RRX ( Avec 2 micro-corrections ) ci-dessous qui fait qq chose en effet ...

 

Mais je ne sais pas exactement quel resultat tu desires ?

 

LA SANTE, Joyeux Noel, Bye, lecrabe

 

;; 
;; https://cadxp.com/topic/49500-lisp-pour-raccord-a-45/page__pid__297377
;; 
;; grandss >>> 
;; Je cherche un lisp me permettant de faire des raccords à 45° sur des schémas d'eaux usées.
;; Nous utilisons un petit addin (CADPROFI) mais il crée des raccords en TE.
;; J'ai donc besoin d'un lisp qui me permet de sélectionner une ligne 1 qui se raccorde à une ligne 2 
;; et qui insère une ligne à 45° sans couper la ligne 2 (voir image) 
;; J'ai bien lisp qui s'appelle RRX mais il ne fonctionne pas.
;; 

(defun c:RRX (/ sel1 sel2 *error* dxfpline marque)
   (defun *error* (msg)
     (ai_sysvar nil)
     (if msg
       (princ (strcat "\n*Abandon* " msg))
     )
     (princ)
   )
   (or *ecart* (setq *ecart* (getvar 'CHAMFERA)))
   (setq *ecart* (cond ((getdist (strcat "\nSpecifiez l'ecart a conserver entre les objets <" (rtos *ecart*) ">: ")))
                       (*ecart*)
                 )
   )
   (ai_sysvar (list '("CMDECHO" . 0) 
                    '("TRIMMODE" . 0) 
                    '("CHAMMODE" . 0)
                    (cons "CHAMFERA" *ecart*) 
                    (cons "CHAMFERB" *ecart*) 
              )
   )
   (if (setq sel1 (entsel "\nSelectionnez l'objet a prolonger: "))
     (if (setq sel2 (entsel "\nSelectionnez le second objet: "))
       ;; si le second objet est une pline => svg pline
       (progn (if (= "LWPOLYLINE" (cdr (assoc 0 (setq dxfpline (entget (car sel2))))))
                (progn (setq marque (entlast))
                       (command-s "_explode" sel2 "")
                       (setq sel2 (nentselp (osnap (cadr sel2) "_near")))
                )
              )
              (command-s "_chamfer" sel1 sel2)  ;; --> "_chamfer"
              (ai_sysvar '(("TRIMMODE" . 1) ("FILLETRAD" . 0)))
              (command-s "_fillet" sel1 "" (entlast))  ;; --> "_fillet"
              ;; si marque  => restore pline
              (if marque
                (progn ((if (= "LWPOLYLINE" (cdr (assoc 0 (entget (car sel1)))))
                          list
                          entdel
                        )
                         (while (setq marque (entnext marque)) (entdel marque))
                       )
                       (entmake dxfpline)
                )
              )
       )
     )
   )
   (*error* nil)
 ) 

Autodesk Expert Elite Team

Posté(e)

J'ai testé, mais sans succès.

J'ai les messages suivants :

Sélectionnez le second objet: ERREUR d'application: Liste entité/point incorrecte.

 

*Abandon* Erreur inconnue de (command-s).

 

Pour le résultat à obtenir, voir les images jointes avec mon premier message.

Modeler Revit MEP - Référent BIM

Revit MEP - Navisworks - Magicad

Autocad MEP 2018 (mais plus beaucoup)

Posté(e)

Hello

 

OK desole mais ca fait qq chose !

 

J ai donc dessine une polyligne 2D horizontale ...

Puis j ai dessine une autre polyligne montant a la verticale depuis UN point PROCHE ...

 

Commande: RRX

CLIC sur la polyligne verticale montante ...

CLIC sur la polyligne horizontale juste avant l intersection ...

 

LA SANTE, Joyeux Noel, Bye, lecrabe

Autodesk Expert Elite Team

Posté(e)

J'ai testé, mais sans succès.

J'ai les messages suivants :

 

 

Pour le résultat à obtenir, voir les images jointes avec mon premier message.

 

Il suffit de supprimer dans "command-s" le "-s"

Je viens de le tester chez moi ça fonctionne après avoir fait ça aux 3 endroits

Posté(e)

Hello

 

+1 avec Maxime063 !

 

Tu as quelle version de AutoCAD ??

 

---- RAPPEL (Merci Mr hmsilva) ----

Command-s was introduced in AutoCAD 2012, also *push-error-using-command*, *push-error-using-stack* and *pop-error-mode* were introduced in AC2012

 

La Sante, Bye, lecrabe

Autodesk Expert Elite Team

Posté(e)

Salut,

Alors autocad mep 2018.

J'ai supprimé les -s, mais maintenant il me dit que la commande CHAMFER est inconnu !!!

Modeler Revit MEP - Référent BIM

Revit MEP - Navisworks - Magicad

Autocad MEP 2018 (mais plus beaucoup)

Posté(e)

Salut lecrabe,

 

Je suis bien parti de ta version mais ca ne fonctionnait pas.

Mais j'y suis arrivé.

J'ai donc pour cela supprimé le -s de command-s et ensuite j'ai rajouté un point aux commande chamfer et fillet, mais je n'ai pas compris pourquoi :o

 

(defun c:RRX (/ sel1 sel2 *error* dxfpline marque)
   (defun *error* (msg)
     (ai_sysvar nil)
     (if msg
       (princ (strcat "\n*Abandon* " msg))
     )
     (princ)
   )
   (or *ecart* (setq *ecart* (getvar 'CHAMFERA)))
   (setq *ecart* (cond ((getdist (strcat "\nSpecifiez l'ecart a conserver entre les objets <" (rtos *ecart*) ">: ")))
                       (*ecart*)
                 )
   )
   (ai_sysvar (list '("CMDECHO" . 0) 
                    '("TRIMMODE" . 0) 
                    '("CHAMMODE" . 0)
                    (cons "CHAMFERA" *ecart*) 
                    (cons "CHAMFERB" *ecart*) 
              )
   )
   (if (setq sel1 (entsel "\nSelectionnez l'objet a prolonger: "))
     (if (setq sel2 (entsel "\nSelectionnez le second objet: "))
       ;; si le second objet est une pline => svg pline
       (progn (if (= "LWPOLYLINE" (cdr (assoc 0 (setq dxfpline (entget (car sel2))))))
                (progn (setq marque (entlast))
                       (command "_explode" sel2 "")
                       (setq sel2 (nentselp (osnap (cadr sel2) "_near")))
                )
              )
              (command "_.chamfer" sel1 sel2)  ;; --> "_chamfer"
              (ai_sysvar '(("TRIMMODE" . 1) ("FILLETRAD" . 0)))
              (command "_.fillet" sel1 "" (entlast))  ;; --> "_fillet"
              ;; si marque  => restore pline
              (if marque
                (progn ((if (= "LWPOLYLINE" (cdr (assoc 0 (entget (car sel1)))))
                          list
                          entdel
                        )
                         (while (setq marque (entnext marque)) (entdel marque))
                       )
                       (entmake dxfpline)
                )
              )
       )
     )
   )
   (*error* nil)
 ) 

Modeler Revit MEP - Référent BIM

Revit MEP - Navisworks - Magicad

Autocad MEP 2018 (mais plus beaucoup)

Posté(e)

Hello

 

À mon avis command ou command-s, ce n'est pas le problème !

 

Sans doute que les commandes FILLET & CHAMFER ont été redéfinis dans ton MEP !

 

Et donc le POINT force la commande originale !

Et le Souligné / Underscore force la commande US/English !

 

La Santé, Bye, lecrabe

Autodesk Expert Elite Team

Posté(e)

Le SOULIGNE je connaissais, mais pas le POINT.

Le command-s m'envoie bien un message d'erreur.

Mais de toute façon, le lisp ne réagit pas correctement à chaque fois. Peut-être dû à CadProfi, je ne sais pas.

Il me mets les raccords un peu n'importe comment. Parfois bien, parfois mal.

Modeler Revit MEP - Référent BIM

Revit MEP - Navisworks - Magicad

Autocad MEP 2018 (mais plus beaucoup)

Posté(e)

Le problème vient de la commande FILLET, lorsque j'utilise plusieurs fois le lisp

Modeler Revit MEP - Référent BIM

Revit MEP - Navisworks - Magicad

Autocad MEP 2018 (mais plus beaucoup)

Posté(e)

Hello

 

Desole mais pour moi, c incomprehensible !

command ou command-s (dans ce micro-Lisp) avec un AutoCAD MEP 2018 ...

command-s existe depuis la version 2012 ...

 

En attente de l'explication d'un Pro: Gilles, Bruno, Didier, Tramber, VDH-Bruno, Luna, etc ...

 

LA SANTE, Joyeux Noel, Bye, lecrabe

Autodesk Expert Elite Team

Posté(e)

merci de ton aide ;)

On va voir la réaction des pro !

Modeler Revit MEP - Référent BIM

Revit MEP - Navisworks - Magicad

Autocad MEP 2018 (mais plus beaucoup)

Posté(e)

Bonjour

Un problème qui pourrait être résolu par

initcommandversion ?

Amicalement

Vincent

C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)

C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)

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é