DenisHen Posté(e) le 10 avril 2006 Posté(e) le 10 avril 2006 Salut à tous.... Alors voilà, j'ai commencé une petite routine et je vous demande, s'il vous plait, de bien vouloir me le corriger, soit dans la syntax, soit dans la mise en page, soit dans d'autre trucs que j'aurai oublié... Le voici... ;; Création de Calque avec couleur et Type de ligne (defun CréaCalq (Calq Coul TypLign /) (cond ((= Coul "") (= Coul "7"))) (T nil) (cond ((= TypLign "") (command "-calque" "e" Calq "co" Coul "" "") (T (command "-calque" "e" Calq "co" Coul "" ""))) ;_ Fin de cond ) ;_ Fin de cond ) ;_ Fin de defun (defun CréaTypLign (TypLign) (cond ((<> TypLign "") (cond ((= TypLign "Cadastrale") (command "-typeligne" "ch" TypLign "s:\config\phalène\phalène.lin" "")) ((= TypLign "Cache") (command "-typeligne" "ch" TypLign "s:\config\phalène\phalène.lin" "")) ((= TypLign "EDF-FT" (StylLign "EDF-FT"))) (T nil)) ;_ Fin de cond )) ;_ Fin de cond ) ;_ Fin de defun (defun StylLign (Lign) (cond ((= Lign "EDF-FT") (StylText ("Cloture1")) (command "-typeligne" "ch" TypLign "s:\config\phalène\phalène.lin" "") ;_ Fin de command (T nil))) ;_ Fin de cond ) ;_ Fin de defun (defun StylText (Styl) (command "-style" Styl "Simplex.shx" "1" "1" "" "" "" "")) ;_ Fin de defun J'allais poser une question, mais les paroles du sage (Tramber) me sont revenu à l'esprit, et je ne poserais pas d'autres question... ;) Merci d'avance... Denis... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
DenisHen Posté(e) le 10 avril 2006 Auteur Posté(e) le 10 avril 2006 Ouinnnnnnnn ! ! ! CadXP à flingué ma jolie mise en page........ Ouinnnnnnnnn ! ! ! Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
Tramber Posté(e) le 10 avril 2006 Posté(e) le 10 avril 2006 C'est plein de fautes ! :D (cond ((= Coul "") (= Coul "7"))) ne veut rien dire du tout(T nil) non plusLe 2ème cond est faux et, en plus (command "-calque" "e" Calq "co" Coul "" "") apparait 2x 2ème fonction :( TypLign "") n'existe pas /= est (peut-être) mieuxLe premier cond est faux mais le 2ème est déjà mieux écrit.sauf cette ligne ((= TypLign "EDF-FT" (StylLign "EDF-FT"))) ((= TypLign "EDF-FT") (StylLign "EDF-FT")) serait mieux.Je fais remarquer que (command "-typeligne" "ch" TypLign "s:\config\phalène\phalène.lin" "") suffit amplement, pas besoinde cond 3ème fonction, nul :D (StylText ("Cloture1")) ne veut rien dire, (StylText "Cloture1") est mieux.le cond est encore faux Efface tout et recommence (hihihi) Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Tramber Posté(e) le 10 avril 2006 Posté(e) le 10 avril 2006 (defun CréaCalq (Calq Coul TypLign /) (defun CréaTypLign (TypLign /)(command "-typeligne" "ch" TypLign "s:\config\phalène\phalène.lin" "")); defun local (cond ((and(= Coul "")(= TypLign "")) (command "-calque" "e" Calq "co" 7 "" "")) ((= Coul "") (command "-calque" "e" Calq "co" 7 "" "") (CréaTypLign TypLign)) ((= TypLign "") (command "-calque" "e" Calq "co" Coul "" "")) (T (command "-calque" "e" Calq "co" Coul "" "") (CréaTypLign TypLign)) ) ) 4 conditions (j'espère que ca marche, même pas sur) :1. les 2 sont ""2. la couleur est ""3. le typeligne est ""4 le reste Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
DenisHen Posté(e) le 10 avril 2006 Auteur Posté(e) le 10 avril 2006 Bo..Je cherche où je me suis planté, je ne trouve pas : Dans mon bouquin (p.74) j'ai : (cond ( (expression booléenne) (action) ) je pensais donc que (cond ((= Coul "") (= Coul "7")) représenteraitSi Coul=rien alors Coul="7" pour que dans la commande -calque, la couleur du calque soit 7 (oui, je sais, c'est celle par défaut... Mais je débute) En tous cas, grand merci à Tramber, je vais bucher ta correction demain. Elle m'a l'air super intéressante, car j'avais sépaé toute mes fonctions, alors qu'il est plus judicieu de les intégrer les unes aux autres. Je le ferais pendant ma "non-productivité productive"...... rassures-toi Tramber, le message est passé, je reprendrai depuis le début... ;) Denis... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
bonuscad Posté(e) le 10 avril 2006 Posté(e) le 10 avril 2006 Je n'ai pas cherché sur la syntaxe du code. Mais remarques seront plus générales: *Evite l'usage de caractères accentués pour tes variables ou fonctions: dans une version non Française ca va planter lamentablement. Tu peux appliquer la même règle pour les noms de fichier.Les commandes aussi en internationale serait beaucoup mieux, mais on va pas être trop exigeant au départ ;) Mais les bonnes habitudes se prennent au début.... * Lorques que tu veux créer un calque type de ligne, il est bien de s'assurer que celui-ci n'existe pas déjà. En effet la comande ne se déroulera pas pareil si la définition existe. Généralement un truc du style "Machin" existe déjà, voulez vous le redéfinir "Oui/Non".Donc La commande vas avoir des options supplémentaires qui ne sont pas prévu dans ton code et il va planter lamentablement.Généralement on utilise la fonction (tblseach) pour vérifier si la défintion existe. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
DenisHen Posté(e) le 10 avril 2006 Auteur Posté(e) le 10 avril 2006 Merci Bonuscad...Je vais bossé tous ça demain (ou ce soir.. mais... pô sûr...) je vais cherché dans les aides pour utiliser "tblseach"... Merci encore à tous... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
Tramber Posté(e) le 10 avril 2006 Posté(e) le 10 avril 2006 Donc La commande vas avoir des options supplémentaires qui ne sont pas prévu dans ton code et il va planter lamentablement. Salut Bonus, pas de précautions avec Etablir de la commande calque. ne lui apprends pas tblsearch, il a déjà beaucoup de devoirs :cool: Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
(gile) Posté(e) le 10 avril 2006 Posté(e) le 10 avril 2006 Petite question préliminaire : as-tu essayé tes routines ? :casstet: Certaines ne peuvent pas marcher en l'état ! Pour le (defun CréaCalq ... ((= Coul "") (= Coul "7")) (= coul "7") est une conditionnelle qui retourne T si l'argument Coul est égal à "7" sinon nil donc l'expression retournera T ou nil si Coul est égal à "" ce qui ne sera pas accepté par les (command ... suivants. Si tu veux attribuer "7" à Coul au cas où l'argument soit "" il faut utiliser (setq Coul "7"). (T nil) n'est pas inclus dans le cond, donc T est interprété comme une fonction et çà n'en est pas une ; erreur: fonction incorrecte: T Le deuxième (cond ... exécute la même chose quel TypLign soit égal à "" ou pas, il est donc parfaitement inutile ! (defun CréaCalq Il est préférable de ne pas mettre d'accents dans les noms de fonctions et de variables (mais çà n'est pas une erreur). Si j'ai compris ce que tu essayes de faire, j'écrirais : (defun CreaCalq (Calq Coul TypLign /) (if (= Coul "") (setq Coul "7") ) (command "-calque" "e" Calq "co" Coul "" "") ) Pour les autres, sans entrer dans le détail : ( TypLign "") devrait te retourner un message d'erreur du type :; erreur: no function definition: n'est pas une fonction LISP, si tu utilises l'éditeur VisualLISP, les fonction LISP prédéfinies apparaissent en bleu. Quand tu spécifies le chemin d'un fichier, utilise des doubles anti-slashs ou des slashs. L'anti-slash est reservé en LISP pour certaines expressions (\n pour un saut de ligne \t pour une tabulation ...) À la place de : "s:\config\phalène\phalène.lin" Il faut écrire : "s:\\config\\phalène\\phalène.lin"ou"s:/config/phalène/phalène.lin" Une paranthèse est sûrement mal placée dans : ((= TypLign "EDF-FT" (StylLign "EDF-FT"))) Tu peux simplifier/corriger : (cond ((= TypLign "Cadastrale") (command "-typeligne" "ch" TypLign "s:\config\phalène\phalène.lin" "" ) ) ((= TypLign "Cache") (command "-typeligne" "ch" TypLign "s:\config\phalène\phalène.lin" "" ) ) ((= TypLign "EDF-FT" (StylLign "EDF-FT"))) (T nil) ) Comme ceci : (cond ((or (= TypLign "Cadastrale") (= TypLign "Cache")) (command "-typeligne" "ch" TypLign "s:\\config\\phalène\\phalène.lin" "" ) ) ((= TypLign "EDF-FT") (StylLign "EDF-FT")) ) le (T nil) est inutile. Pour ce qu'il en est de la mise en page, je n'ai pas d'avis là dessus, j'ai pris l'habitude d'utiliser le formatage par défaut de l'éditeur VisualLISP. J'ai mis trop de temps à poster ma réponse :exclam: (j'ai mangé entre-temps) le principal a déjà été dit. [Edité le 10/4/2006 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
DenisHen Posté(e) le 10 avril 2006 Auteur Posté(e) le 10 avril 2006 Merci à toi Gile... Merci beaucoup à vous tous... Pour un premier, j'ai effectivement beaucoup de devoirs ! ! ;) En fait, pour vous expliquer ma motivation, je développe des centaines de petites routines dans des menus particuliers... exemple, quand un collègue veux dessiner un bâtiment, il clique sur [Contour Bâtiment]... qui exécute depuis le fichier .MNS ^C^C-calque;e;"Bâtiments (Contour)";co;2;;^C^C-typeligne;a;ducalque;;^C^C_pline 1. je créer le bon calque en le rendant courant2. je lui donne la couleur 2 (jaune)3. je défini le type de ligne comme courant (continu) Car je les connais... Ils dessine TOUT dans 3 ou 4 calques (0 - Plan - texte - titre) et en plus, tous les textes ne sont pas forcément dans le calque "texte" ! !4. je lance la commande Polyligne... Mais lorsque j'arrive à des commandes plus longues... J'ai du mal à m'en sortir, comme celle qui dessine une clôture (symbole de notre clôture : ----o----o----o----o---o) Je dois donc, 1. Créer le style de texte "Cloture2", ( car les "o" du type de ligne sont issus d'un shx)2. Charger le style de ligne "Cloture-bois"3. Créer le calque "Cloture piquet bois"" de couleur 1 et du type de ligne "Cloture-bois" PFFFFFffffff.......... Ca donne dans mon MNS : ^C^C-style;Cloture1;Phalène-Ligne.shx;1;1;;;;;^C^C-style;Cloture2;simplex.shx;1;1;;;;;^C^C-style;Cloture3;romand.shx;1;1;;;;;^C^C^Cfiledia;0;-typeligne;ch;Cloture*;s:/config/Phalène/Phalène.lin;;;;;;;;;;;;;;^C^Cfiledia;1;^C-calque;e;"Limites (Clôture Piquet bois)";co;1;;tl;Cloture-bois-C;;^C^C-typeligne;a;ducalque;;^C^C_pline Alors qu'avec une routine Lisp, je n'aurais plus que ^C^C(Creacalq "Nom du calque" " Couleur" " Type de ligne");_pline PS : Noms de mes types de lignes "Cloture----" pour les Clôtures, "Reseau---" pour les réseaux (EDF, FT, EU, EP) et d'autre encore dépandent d'un style de texte du même nom, pour ne pas qu'il soit utilisé par un "vrai" texte puis modifié par la suite par un petit fouineur...Après quoi, mes lignes ne ressembleront plus à rien ! ! Au fait, Mes types de lignes sont toutes disponibles... Et sont cadeaux.... bien sur ! ! Et mon Lisp une fois terminé le sera aussi... Mais pour celà, j'ai encore beaucoup de boulo ! ! Alors je m'y met... Merci encore à vous tous.... Denis... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
DenisHen Posté(e) le 10 avril 2006 Auteur Posté(e) le 10 avril 2006 Une dernière petite question à Tramber,Dans :(defun CréaCalq (Calq Coul TypLign /) (defun CréaTypLign (TypLign /)(command "-typeligne" "ch" TypLign "s:\config\phalène\phalène.lin" "")); defun local (cond ((and(= Coul "")(= TypLign "")) (command "-calque" "e" Calq "co" 7 "" "")) ((= Coul "") (command "-calque" "e" Calq "co" 7 "" "") (CréaTypLign TypLign)) ((= TypLign "") (command "-calque" "e" Calq "co" Coul "" "")) (T (command "-calque" "e" Calq "co" Coul "" "") (CréaTypLign TypLign)) ) ) Pourquoi, il y a "(CréaTypLign TypLign))" à la fin de "CréaTypLign" ? Je n'ai pas saisie . . Mais on ne sait jamais... Merci, Denis... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
Tramber Posté(e) le 10 avril 2006 Posté(e) le 10 avril 2006 Pas de discussions inutiles....Au boulot. :cool: tu dois rager là. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
(gile) Posté(e) le 10 avril 2006 Posté(e) le 10 avril 2006 Pourquoi, il y a "(CréaTypLign TypLign))" à la fin de "CréaTypLign" ? Essaye de suivre le conseil que je te donnais ici, sur l'utilisation de l'éditeur VisualLISP. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
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