Aller au contenu

Quel est le type de ligne?


Messages recommandés

Posté(e)

Salut,

 

Existe-t-il un moyen, lorsque l'on reçoit un fichier, de savoir si les types de lignes ont été chargées depuis le fichier adad.lin ou adadiso.lin?

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)

tu ne le saura qu'à partir des variables MEASUREMENT et MEASUREMENTINIT.

Aide d'AutoCAD à lire

Dessinateur AutoCAD, Modeleur BIM, consultant informatique logiciels métier

Lenovo ThinkStation P330 i9 9900K 32Gb RAM 512 SSD + 1To

GstarCAD, Fisa-CAD, Revit, FisaBIM CVC, Microsoft Office

 

PlaquetteDeplianteMars2024.pdf

Posté(e)

En fait je souhaiterais savoir si il existe un moyen ou un lisp qui me permettrait par un doubl-clic et la fenêtre de propriétés de savoir à partir de quel fichiers les types de lignes ont été chargés.

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)

 

Bonsoir

 

Attention, si on a changé en cours de route de MEASUREMENT,

le résultat risque d'être amusant ! :o

 

Surtout si on a chargé et utilisé de multiples Hachures et Types de lignes ... :(

 

Le Decapode

 

Autodesk Expert Elite Team

Posté(e)

C'erst pour ça que je souhaiterais savoir si il existe un lisp qu me permettrais de savoir d'où viend le type de ligne sur lequel je clique.

 

Double clique sur une ligne ---> ce type de ligne a été chargé depuis le fichier acadiso.lin ou AutoCAD.lin

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)

Allez, un truc vite fait mais sur un simple clic

 

(defun c:rli(/ ent le li sel st)

 (defun MsgBox (Titre Bouttons Message / Reponse WshShell)
   (setq WshShell (vlax-create-object "WScript.Shell"))
   (setq Reponse  (vlax-invoke WshShell 'Popup Message 0 Titre (itoa Bouttons)))
   (vlax-release-object WshShell)
   Reponse
 )

 (defun recherche (nom li le / f ok v)
   (if (setq f (open (findfile nom) "r"))
     (progn
       (while (setq v (read-line f))
         (if (or (vl-string-search li v) (vl-string-search le v))
           (setq ok T)
         )
       )
       (close f)
     )
   )
   ok
 )

 (if (setq sel (entsel "\nSélectionnez une ligne : "))
   (progn
     (setq ent (entget (car sel)))
     (if (member (cdr (assoc 0 ent)) (list "LINE" "LWPOLYLINE" "POLYLINE" "CIRCLE" "ARC" "SPLINE"))
       (if (cdr (assoc 6 ent))
         (if (and (not (eq (cdr (assoc 6 ent)) "ByBlock")) (not (eq (cdr (assoc 6 ent)) "Continuous")))
           (progn
             (setq ent (vl-remove-if-not '(lambda (x) (eq (car x) 49)) (tblsearch "ltype" (cdr (assoc 6 ent)))) li "A" le "A")
             (foreach st ent
               (setq li (strcat li ","  (vl-string-subst "." "0." (rtos (cdr st))))
                     le (strcat le ", " (vl-string-subst "." "0." (rtos (cdr st)))))
             )
             (if (not (recherche "acad.lin" li le))
               (if (recherche "acadiso.lin" li le)
                 (msgbox "RLI" 64 (strcat "Le type de ligne " (cdr (assoc 6 (entget (car sel)))) "\na été trouvé dans le fichier \"ACADISO.LIN\"."))
                 (msgbox "RLI" 64 (strcat "Le type de ligne " (cdr (assoc 6 (entget (car sel)))) "\nn'a pas été trouvé dans le fichier \"ACAD.LIN\" et \"ACADISO.LIN\"."))
               )
               (msgbox "RLI" 64 (strcat "Le type de ligne " (cdr (assoc 6 (entget (car sel)))) "\na été trouvé dans le fichier \"ACAD.LIN\"."))
             )
           )
           (msgbox "RLI" 32 (strcat "Type de ligne n'appartenant pas à un fichier .LIN.\nType " (cdr (assoc 6 ent)) "."))
         )
         (msgbox "RLI" 32 "Pas de type de ligne de défini.\nType DuCalque.")
       )
       (msgbox "RLI" 48 "Ce n'est pas une ligne")
     )
   )
 )
 (princ)
)

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)
Allez, un truc vite fait mais sur un simple clic

 

(defun c:rli(/ ent le li sel st)

 (defun MsgBox (Titre Bouttons Message / Reponse WshShell)
   (setq WshShell (vlax-create-object "WScript.Shell"))
   (setq Reponse  (vlax-invoke WshShell 'Popup Message 0 Titre (itoa Bouttons)))
   (vlax-release-object WshShell)
   Reponse
 )

 (defun recherche (nom li le / f ok v)
   (if (setq f (open (findfile nom) "r"))
     (progn
       (while (setq v (read-line f))
         (if (or (vl-string-search li v) (vl-string-search le v))
           (setq ok T)
         )
       )
       (close f)
     )
   )
   ok
 )

 (if (setq sel (entsel "\nSélectionnez une ligne : "))
   (progn
     (setq ent (entget (car sel)))
     (if (member (cdr (assoc 0 ent)) (list "LINE" "LWPOLYLINE" "POLYLINE" "CIRCLE" "ARC" "SPLINE"))
       (if (cdr (assoc 6 ent))
         (if (and (not (eq (cdr (assoc 6 ent)) "ByBlock")) (not (eq (cdr (assoc 6 ent)) "Continuous")))
           (progn
             (setq ent (vl-remove-if-not '(lambda (x) (eq (car x) 49)) (tblsearch "ltype" (cdr (assoc 6 ent)))) li "A" le "A")
             (foreach st ent
               (setq li (strcat li ","  (vl-string-subst "." "0." (rtos (cdr st))))
                     le (strcat le ", " (vl-string-subst "." "0." (rtos (cdr st)))))
             )
             (if (not (recherche "acad.lin" li le))
               (if (recherche "acadiso.lin" li le)
                 (msgbox "RLI" 64 (strcat "Le type de ligne " (cdr (assoc 6 (entget (car sel)))) "\na été trouvé dans le fichier \"ACADISO.LIN\"."))
                 (msgbox "RLI" 64 (strcat "Le type de ligne " (cdr (assoc 6 (entget (car sel)))) "\nn'a pas été trouvé dans le fichier \"ACAD.LIN\" et \"ACADISO.LIN\"."))
               )
               (msgbox "RLI" 64 (strcat "Le type de ligne " (cdr (assoc 6 (entget (car sel)))) "\na été trouvé dans le fichier \"ACAD.LIN\"."))
             )
           )
           (msgbox "RLI" 32 (strcat "Type de ligne n'appartenant pas à un fichier .LIN.\nType " (cdr (assoc 6 ent)) "."))
         )
         (msgbox "RLI" 32 "Pas de type de ligne de défini.\nType DuCalque.")
       )
       (msgbox "RLI" 48 "Ce n'est pas une ligne")
     )
   )
 )
 (princ)
)

 

@+

 

Délire, franchement, tu me trous. C'est ce que je souhaite mais par contre je ne comprends pas. J'ai chargé un nouveau type de ligne (ISOLATION) depuis le fichier acadiso.lin. Je dessine une ligne avec le nouveau type, je lance la commande rli du lisp et le message me dis:

Le type de ligne ISOLATION n'a pas été trouvé dans le fichier "ACAD.LIN" et "ACADISO.LIN" :casstet:

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)

Il n'est pas évident à créer le lisp. Je fais une recherche du type de ligne via le tableau LTYPE qui me fournit le code dxf 49 qui contient les caractéristiques du type de ligne. A partir de là, je construis une chaine de caractère afin de faire une comparaison dans les deux fichiers.

J'ai testé avec deux ou trois type de ligne et ça fonctionnait parfaitement

Je vais rechercher du coté de ce type de ligne

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

C'est bon, voici le lisp corrigé

 

@+

 

(defun c:rli(/ ent lb le li n sel uni zer)

 (defun MsgBox (Titre Bouttons Message / Reponse WshShell)
   (setq WshShell (vlax-create-object "WScript.Shell"))
   (setq Reponse (vlax-invoke WshShell 'Popup Message 0 Titre (itoa Bouttons)))
   (vlax-release-object WshShell)
   Reponse
   )

 (defun recherche (nom lb li le / f ok v)
   (if (setq f (open (findfile nom) "r"))
     (progn
       (while (setq v (read-line f))
         (if (vl-string-search lb v)
           (progn
             (setq v (read-line f))
             (if (or (vl-string-search li v) (vl-string-search le v))
               (setq ok T)
             )
           )
         )
       )
       (close f)
     )
   )
   ok
 )

 (if (setq sel (entsel "\nSélectionnez une ligne : "))
   (progn
     (setq ent (entget (car sel)))
     (if (member (cdr (assoc 0 ent)) (list "LINE" "LWPOLYLINE" "POLYLINE" "CIRCLE" "ARC" "SPLINE"))
       (if (cdr (assoc 6 ent))
         (if (and (not (eq (cdr (assoc 6 ent)) "ByBlock")) (not (eq (cdr (assoc 6 ent)) "Continuous")))
           (progn
             (setq uni (getvar "luprec")
                   zer (getvar "dimzin"))
             (setvar "dimzin" 12)
             (setvar "luprec" 8)
             (setq ent (tblsearch "ltype" (cdr (assoc 6 ent)))
                    lb (strcat "*" (cdr (assoc 2 ent)) "," (cdr (assoc 3 ent)))
                    ent (vl-remove-if-not '(lambda (x) (eq (car x) 49)) ent) li "A" le "A" n 0)
             (while (< n 2)
               (setq li (strcat li ","   (rtos (cdr (nth n ent))))
                     le (strcat le ", "  (rtos (cdr (nth n ent))))
                      n (1+ n))
             )
             (if (not (recherche "acad.lin" lb li le))
               (if (recherche "acadiso.lin" lb li le)
                 (msgbox "RLI" 64 (strcat "Le type de ligne " (cdr (assoc 6 (entget (car sel)))) "\na été trouvé dans le fichier \"ACADISO.LIN\"."))
                 (msgbox "RLI" 64 (strcat "Le type de ligne " (cdr (assoc 6 (entget (car sel)))) "\nn'a pas été trouvé dans le fichier \"ACAD.LIN\" et \"ACADISO.LIN\"."))
               )
               (msgbox "RLI" 64 (strcat "Le type de ligne " (cdr (assoc 6 (entget (car sel)))) "\na été trouvé dans le fichier \"ACAD.LIN\"."))
             )
             (setvar "luprec" uni)
             (setvar "dimzin" zer)
           )
           (msgbox "RLI" 32 (strcat "Type de ligne n'appartenant pas à un fichier .LIN.\nType " (cdr (assoc 6 ent)) "."))
         )
         (msgbox "RLI" 32 "Pas de type de ligne de défini.\nType DuCalque.")
       )
       (msgbox "RLI" 48 "Ce n'est pas une ligne")
     )
   )
 )
 (princ)
)

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)
C'est bon, voici le lisp corrigé

 

@+

 

(defun c:rli(/ ent lb le li n sel uni zer)

 (defun MsgBox (Titre Bouttons Message / Reponse WshShell)
   (setq WshShell (vlax-create-object "WScript.Shell"))
   (setq Reponse (vlax-invoke WshShell 'Popup Message 0 Titre (itoa Bouttons)))
   (vlax-release-object WshShell)
   Reponse
   )

 (defun recherche (nom lb li le / f ok v)
   (if (setq f (open (findfile nom) "r"))
     (progn
       (while (setq v (read-line f))
         (if (vl-string-search lb v)
           (progn
             (setq v (read-line f))
             (if (or (vl-string-search li v) (vl-string-search le v))
               (setq ok T)
             )
           )
         )
       )
       (close f)
     )
   )
   ok
 )

 (if (setq sel (entsel "\nSélectionnez une ligne : "))
   (progn
     (setq ent (entget (car sel)))
     (if (member (cdr (assoc 0 ent)) (list "LINE" "LWPOLYLINE" "POLYLINE" "CIRCLE" "ARC" "SPLINE"))
       (if (cdr (assoc 6 ent))
         (if (and (not (eq (cdr (assoc 6 ent)) "ByBlock")) (not (eq (cdr (assoc 6 ent)) "Continuous")))
           (progn
             (setq uni (getvar "luprec")
                   zer (getvar "dimzin"))
             (setvar "dimzin" 12)
             (setvar "luprec" 8)
             (setq ent (tblsearch "ltype" (cdr (assoc 6 ent)))
                    lb (strcat "*" (cdr (assoc 2 ent)) "," (cdr (assoc 3 ent)))
                    ent (vl-remove-if-not '(lambda (x) (eq (car x) 49)) ent) li "A" le "A" n 0)
             (while (< n 2)
               (setq li (strcat li ","   (rtos (cdr (nth n ent))))
                     le (strcat le ", "  (rtos (cdr (nth n ent))))
                      n (1+ n))
             )
             (if (not (recherche "acad.lin" lb li le))
               (if (recherche "acadiso.lin" lb li le)
                 (msgbox "RLI" 64 (strcat "Le type de ligne " (cdr (assoc 6 (entget (car sel)))) "\na été trouvé dans le fichier \"ACADISO.LIN\"."))
                 (msgbox "RLI" 64 (strcat "Le type de ligne " (cdr (assoc 6 (entget (car sel)))) "\nn'a pas été trouvé dans le fichier \"ACAD.LIN\" et \"ACADISO.LIN\"."))
               )
               (msgbox "RLI" 64 (strcat "Le type de ligne " (cdr (assoc 6 (entget (car sel)))) "\na été trouvé dans le fichier \"ACAD.LIN\"."))
             )
             (setvar "luprec" uni)
             (setvar "dimzin" zer)
           )
           (msgbox "RLI" 32 (strcat "Type de ligne n'appartenant pas à un fichier .LIN.\nType " (cdr (assoc 6 ent)) "."))
         )
         (msgbox "RLI" 32 "Pas de type de ligne de défini.\nType DuCalque.")
       )
       (msgbox "RLI" 48 "Ce n'est pas une ligne")
     )
   )
 )
 (princ)
)

 

La Classe :D

merci pour ce nouveau lisp ;)

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é