nen Posté(e) le 1 septembre 2016 Posté(e) le 1 septembre 2016 Bonjour à tous,C’est mon premier post dans ce forum :D au sujet d’un lisp, ci-joint, dont j’ignore l’auteur.Ce lisp sert à charger des calques, il fonctionne très bien, sauf que, quand un des calques du fichier "txt" existe déjà dans le "dwg", le lisp s’arrête et ne me charge pas les autres.Quelqu’un aurait-il une solution pour une correction du lisp ? Merci d’avanceCalques-Base.lspCalques-Base.txt
(gile) Posté(e) le 1 septembre 2016 Posté(e) le 1 septembre 2016 Salut, J'ai juste ajouté un test pour évaluer si le calque existe déjà (non testé). Ce LISP pourrait facilement être optimisé. ;| Fonction Calques-Base ; Description : Fonction qui crée la liste des couches contenues dans le fichier Calques-Base.txt. Variables locales : f-cou-stan : du fichier des couches standards n-fich-cou : nom interne du fichier li : lignes du fichier nom-cou : nom de la couche couleur : couleur de la couche typel : type de ligne de la couche de : description de la couche |; (defun c:Calques-Base ( / f-cou-stan li nom-cou couleur typel de) (setvar "cmdecho" 0) (setq f-cou-stan (findfile "C:\\Program Files\\Autodesk\\AutoCAD 2017\\Support\\Lisp\\Calques-Base.TXT")) (if (not f-cou-stan) (progn (alert "Le fichier Calques-Base.TXT est introuvable") (exit) ) ) (setq n-fich-cou (open f-cou-stan "r")) (setq li (read-line n-fich-cou)) (while li (setq li (read li)) (setq nom-cou (car li)) (if (null (tblsearch "LAYER" nom-cou)) (progn (setq couleur (cadr li)) (setq typel (caddr li)) (setq de (cadddr li)) (command "_.-layer" "_n" nom-cou "_c" couleur nom-cou "_lt" typel nom-cou "s" de nom-cou "") ) ) (setq li (read-line n-fich-cou)) ) (close n-fich-cou) (alert "Les Calques de Base ont été créées") (princ) ) 1 Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
nen Posté(e) le 1 septembre 2016 Auteur Posté(e) le 1 septembre 2016 Salut Gile, Super merci c'est exactement ça :D Je ne ni connais pas grand chose au lisp :( ¨Quand tu dis facilement optimisé, que peut-on faire de plus ? :blink: Meilleures salutationNen 1
nen Posté(e) le 26 octobre 2016 Auteur Posté(e) le 26 octobre 2016 Bonjour le forum, J'avais posté cette demande suite à un problème qui été résolu par Gile, merci :D . J'ai une autre question suite à la création de calque avec mes deux fichiers lsp et txt(ci-joint) :blink: . Est-il possible de mettre une couleur rvb dans la partie "couleur" de mon fichier txt ? ("nom calque" "couleur" "type ligne" "description") Merci d'avanceMeilleures salutations
(gile) Posté(e) le 26 octobre 2016 Posté(e) le 26 octobre 2016 Salut, Pour ce faire, il faut que le programme puisse déterminer si telle ligne du fichier texte donne une couleur de l'index ou une couleur RVB, parce que les options de la commande sont différentes. Si le format de ton fichier texte est :("001 PLAN BASE" "7" "continuous" "PLAN BASE") ("002 TRAME PLAN" "7" "continuous" "TRAME PLAN") ("003 GRILLE" "255,0,0" "continuous" "GRILLE")Tu peux utiliser wcmatch pour tester le type de couleur :(if (wcmatch couleur "#*,#*,#*") (command "_.layer" "_new" nom-cou "_color" "_true" couleur nom-cou "_ltype" typel nom-cou "_description" de nom-cou "") (command "_.layer" "_new" nom-cou "_color" couleur nom-cou "_ltype" typel nom-cou "_description" de nom-cou "") ) PS : j'ai mis les noms des options en entier pour que le code soit plus lisible. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
nen Posté(e) le 26 octobre 2016 Auteur Posté(e) le 26 octobre 2016 Salut, Merci pour ton message. Si j'ai bien compris je place ce code:(if (wcmatch couleur "#*,#*,#*") (command "_.layer" "_new" nom-cou "_color" "_true" couleur nom-cou "_ltype" typel nom-cou "_description" de nom-cou "") (command "_.layer" "_new" nom-cou "_color" couleur nom-cou "_ltype" typel nom-cou "_description" de nom-cou "") )Juste avant "(if (not f-cou-stan)" ?;| Fonction Calques-Base ; Description : Fonction qui crée la liste des couches contenues dans le fichier Calques-Base.txt. Variables locales : f-cou-stan : du fichier des couches standards n-fich-cou : nom interne du fichier li : lignes du fichier nom-cou : nom de la couche couleur : couleur de la couche typel : type de ligne de la couche de : description de la couche |; (defun c:Calques-Base ( / f-cou-stan li nom-cou couleur typel de) (setvar "cmdecho" 0) (setq f-cou-stan (findfile "C:\\Program Files\\Autodesk\\AutoCAD 2017\\Support\\Lisp\\Calques-Base.TXT")) (if (not f-cou-stan) (progn (alert "Le fichier Calques-Base.TXT est introuvable") (exit) ) ) (setq n-fich-cou (open f-cou-stan "r")) (setq li (read-line n-fich-cou)) (while li (setq li (read li)) (setq nom-cou (car li)) (if (null (tblsearch "LAYER" nom-cou)) (progn (setq couleur (cadr li)) (setq typel (caddr li)) (setq de (cadddr li)) (command "_.-layer" "_n" nom-cou "_c" couleur nom-cou "_lt" typel nom-cou "s" de nom-cou "") ) ) (setq li (read-line n-fich-cou)) ) (close n-fich-cou) (alert "Les Calques de Base ont été créées") (princ) )
(gile) Posté(e) le 26 octobre 2016 Posté(e) le 26 octobre 2016 Si j'ai bien compris je place ce code:(if (wcmatch couleur "#*,#*,#*") (command "_.layer" "_new" nom-cou "_color" "_true" couleur nom-cou "_ltype" typel nom-cou "_description" de nom-cou "") (command "_.layer" "_new" nom-cou "_color" couleur nom-cou "_ltype" typel nom-cou "_description" de nom-cou "") )Juste avant "(if (not f-cou-stan)" ? Non, tu n'as pas bien compris.(if (wcmatch couleur "#*,#*,#*") teste si la variable couleur contient une chaîne avec : un ou plusieurs chiffres, une virgule, un ou plusieurs chiffres, une virgule, un ou plusieurs chiffres. Autrement le format pour une couleur vraie (de "0,0,0" à "255,255,255"). Voir l'aide pour wcmatch.Et suivant le résultat du test lance la commande pour une couleur "vraie" (RVB) ou une couleur de l'index. Donc, où dois-tu placer le code ? Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
nen Posté(e) le 26 octobre 2016 Auteur Posté(e) le 26 octobre 2016 J'ai réussi à le placer au bon endroit :D;| Fonction Calques-Base-SIS ; Description : Fonction qui crée la liste des couches contenues dans le fichier Calques-Base-SMEC.txt. Variables locales : f-cou-stan : du fichier des couches standards n-fich-cou : nom interne du fichier li : lignes du fichier nom-cou : nom de la couche couleur : couleur de la couche typel : type de ligne de la couche de : description de la couche |; (defun c:SMEC ( / f-cou-stan li nom-cou couleur typel de) (setvar "cmdecho" 0) (setq f-cou-stan (findfile "C:\\Program Files\\Autodesk\\AutoCAD 2017\\Support\\Lisp\\Calques-Base-SMEC.TXT")) (if (not f-cou-stan) (progn (alert "Le fichier Calques-Base-SMEC.TXT est introuvable") (exit) ) ) (setq n-fich-cou (open f-cou-stan "r")) (setq li (read-line n-fich-cou)) (while li (setq li (read li)) (setq nom-cou (car li)) (if (null (tblsearch "LAYER" nom-cou)) (progn (setq couleur (cadr li)) (setq typel (caddr li)) (setq de (cadddr li)) (if (wcmatch couleur "#*,#*,#*") (command "_.layer" "_new" nom-cou "_color" "_true" couleur nom-cou "_ltype" typel nom-cou "_description" de nom-cou "") (command "_.layer" "_new" nom-cou "_color" couleur nom-cou "_ltype" typel nom-cou "_description" de nom-cou "") ) ) ) (setq li (read-line n-fich-cou)) ) (close n-fich-cou) (alert "Les Calques de Base du bureau DAO du SMEC ont été créées\n\nToni t'est trop fort !!!") (princ) ) Par contre il me crée bien le premier calque avec la couleur "44,186,131" par contre calque suivant qui a la couleur 5 et j'ai ce message: Couleur non valide. Entrez trois valeurs comprises entre 0 et 255, séparées par une virgule. ; erreur: Fonction annulée
(gile) Posté(e) le 26 octobre 2016 Posté(e) le 26 octobre 2016 Oups!... Une erreur s'est glissée dans le modèle (pattern) pour wcmatch.À remplacer par :"#*`,#*`,#*" Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
nen Posté(e) le 27 octobre 2016 Auteur Posté(e) le 27 octobre 2016 Salut Gile, Merci pour ton aide et tes messages :) En effet je les ai remplacé par ton nouveau code et cella fonctionne impeccable :D Merci encore ;) Meilleures salutations
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