Steven Posté(e) le 28 novembre 2006 Posté(e) le 28 novembre 2006 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.
BIM G CO Posté(e) le 28 novembre 2006 Posté(e) le 28 novembre 2006 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
Steven Posté(e) le 28 novembre 2006 Auteur Posté(e) le 28 novembre 2006 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.
lecrabe Posté(e) le 28 novembre 2006 Posté(e) le 28 novembre 2006 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
Steven Posté(e) le 29 novembre 2006 Auteur Posté(e) le 29 novembre 2006 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.
Patrick_35 Posté(e) le 29 novembre 2006 Posté(e) le 29 novembre 2006 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 PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Steven Posté(e) le 1 décembre 2006 Auteur Posté(e) le 1 décembre 2006 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.
esbe Posté(e) le 1 décembre 2006 Posté(e) le 1 décembre 2006 Hello à tous Je confirme chez moi c'est pareil il ne reconnait pas l'isolation @+
Patrick_35 Posté(e) le 1 décembre 2006 Posté(e) le 1 décembre 2006 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 parfaitementJe vais rechercher du coté de ce type de ligne @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Patrick_35 Posté(e) le 1 décembre 2006 Posté(e) le 1 décembre 2006 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 PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Steven Posté(e) le 4 décembre 2006 Auteur Posté(e) le 4 décembre 2006 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.
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant