Aller au contenu

LISP ou commande pour couper une cote en 2 cotes


brunomu

Messages recommandés

Bonjour le Forum !

 

Je cherche une commande ou un LISP qui permette de scinder en 2 une cote.

Par exemple, j'ai coté les hauteurs de dalle à dalle d'un bâtiment.

Je veux détailler cette ligne de cotes en précisant l'épaisseur d'un plancher.

Aujourd'hui, je ne sais que créer une nouvelle cote, ou raccourcir une cote existante et créer une cote qui la prolonge.

 

Je préfèrerais :

1/ lancer une commande ou un LISP

2/ cliquer sur la cote à scinder

3/ cliquer sur un point à coter qui déterminera où couper la cote

4/ obtenir 2 cotes au lieu de la cote initiale

 

Quelqu'un sait-il comment faire ?

 

Merci !

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

Pas testé en profondeur...

 

(defun c:cut_dim ( / js n ent_dim dxf_ent lremov dxf_cod pt_break p1 p2 p_nw1 p_nw2)
 (setq js
   (ssget "_+.:E:S"
     (list
       (cons 0 "DIMENSION")
       (cons 67 (if (eq (getvar "CVPORT") 2) 0 1))
       (cons 410 (if (eq (getvar "CVPORT") 2) "Model" (getvar "CTAB")))
     )
   )
 )
 (cond
   (js
     (setq
       ent_dim (ssname js 0)
       dxf_ent (entget ent_dim)
       lremov nil
       dxf_cod dxf_ent
     )
     (cond
       ((or (zerop (rem (cdr (assoc 70 dxf_ent)) 32)) (eq (rem (cdr (assoc 70 dxf_ent)) 32) 1))
         (foreach n dxf_cod (if (member (car n) '(2 5 330 -1)) (setq lremov (cons (car n) lremov))))
         (foreach m lremov
           (setq dxf_cod (vl-remove (assoc m dxf_cod) dxf_cod))
         )
         (entmake dxf_cod)
         (setq dxf_cod (entget (entlast)))
         (initget 1)
         (setq
           pt_break (trans (getpoint "\nDonnez le point de coupure: ") 1 0)
           p1 (cdr (assoc 13 dxf_ent))
           p2 (cdr (assoc 14 dxf_ent))
           p_nw2 (polar p2 (angle p2 pt_break) (distance p2 pt_break))
           dxf_ent (subst (cons 14 p_nw2) (assoc 14 dxf_ent) dxf_ent)
         )
         (entmod dxf_ent)
         (setq
           p_nw1 (polar p1 (angle p1 pt_break) (distance p1 pt_break))
           dxf_cod (subst (cons 13 p_nw1) (assoc 13 dxf_cod) dxf_cod)
         )
         (entmod dxf_cod)
       )
       (T
         (princ "\nN'est pas une côte alignée, pivotée, horizontale ou verticale.")
       )
     )
   )
 )
 (prin1)
)

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Lien vers le commentaire
Partager sur d’autres sites

Salut bonuscad,

 

Génial, ton lisp :) Par contre, serait-il possible de faire, aussi, le sens inverse; pouvoir sélectionner plusieurs cotes sur la même ligne et n'en faire qu'une seule?

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.

Lien vers le commentaire
Partager sur d’autres sites

hello

 

sur EXCHANGE AUTODESK

 

il y a les deux programmes qui existent pour 6 dollars

ils fonctionnent tres bien et c'est pas le perou

 

a+

 

phil

FREELANCE

Autodesk Architecture 2025 sous windows 11 64

REVIT

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Lien vers le commentaire
Partager sur d’autres sites

Par contre, serait-il possible de faire, aussi, le sens inverse; pouvoir sélectionner plusieurs cotes sur la même ligne et n'en faire qu'une seule?

 

De façon très sommaire, car je pense que les controles devrait être beaucoup plus approfondis.

Donc bien faire une sélection des cotes seulement concernées par le regroupement.

 

Si quelqu'un veux fiabiliser le code ne vous genez pas...

 

(defun c:join_dim ( / js l_p1 l_p2 n ent_dim dxf_ent)
 (setq js
   (ssget
     (list
       (cons 0 "DIMENSION")
       (cons 67 (if (eq (getvar "CVPORT") 2) 0 1))
       (cons 410 (if (eq (getvar "CVPORT") 2) "Model" (getvar "CTAB")))
     )
   )
   l_p1 nil l_p2 nil
 )
 (cond
   (js
     (repeat (setq n (sslength js))
       (setq
         ent_dim (ssname js (setq n (1- n)))
         dxf_ent (entget ent_dim)
       )
       (cond
         ((or (zerop (rem (cdr (assoc 70 dxf_ent)) 32)) (eq (rem (cdr (assoc 70 dxf_ent)) 32) 1))
           (setq
             l_p1 (cons (cdr (assoc 13 dxf_ent)) l_p1)
             l_p2 (cons (cdr (assoc 14 dxf_ent)) l_p2)
           )
         )
         (T
           (princ "\nN'est pas une côte alignée, pivotée, horizontale ou verticale.")
         )
       )
     )
     (cond
       ((and l_p1 l_p2)
         (foreach el l_p1
           (if (and (member el l_p1) (member el l_p2))
             (setq l_p1 (vl-remove el l_p1) l_p2 (vl-remove el l_p2))
           )
         )
         (setq dxf_ent (subst (cons 13 (car l_p1)) (assoc 13 dxf_ent) dxf_ent))
         (setq dxf_ent (subst (cons 14 (car l_p2)) (assoc 14 dxf_ent) dxf_ent))
         (entmod dxf_ent)
       )
     )
     (repeat (setq n (sslength js))
       (setq ent_dim (ssname js (setq n (1- n))))
       (if (not (eq ent_dim (cdar dxf_ent))) (entdel ent_dim))
     )
   )
 )
 (prin1)
)

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Lien vers le commentaire
Partager sur d’autres sites

Bonuscad,

 

Nickel le lisp :)

 

hello

 

sur EXCHANGE AUTODESK

 

il y a les deux programmes qui existent pour 6 dollars

ils fonctionnent tres bien et c'est pas le perou

 

a+

 

phil

 

Salut Phiphil,

 

Soit, mais si on part sur le principe, on peut presque, pour ne pas dire tout trouver sur Autodesk Exchange Apps.

Toutefois, celà peut poser soucis à ceux qui n'y ont pas accès par manque de souscription car tout le monde n'est pas encore sous souscription ou manque de droits administrateur pour installer l'appli, voire blocage du firewall de l'entreprise et on sait très bien que demandé un petit truc au SI de sa boîte peut prendre parfois être décourageant. il est donc quand même cool de pouvoir trouver des lisps développés par la communauté de Cadxp ou autre.

Quant au prix des applications dont tu parles (2.95 $ chacune), il est vrai que ça n'ai pas la mer à boire. J'ai déjà acheté des applications sur Autodesk Exchange Apps mais dans le cas présent, du fait que Bonuscad a développé et offert un lisp qui scinde des cotes, je me suis demandé si le fait de pouvoir scinder des cotes, on ne pouvait pas en joindre et maintenant que ces deux lisps sont à disposition, ils pourront toujours servir à qui le souhaite.

 

Bonne journée ;)

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.

Lien vers le commentaire
Partager sur d’autres sites

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é