Aller au contenu

Cmd calque, Type ligne et Style texte... Automatique


Messages recommandés

Posté(e)

Bonsoir à tous....

 

Voilà, j'ai, dans mes menus, des lignes interminables de commandes......

J'ai donc décidé de me mettre au Lisp.. J'ai donc créé quelques petites routines, comme dessiner un pilier ou des amorces de bâtiments... Mais je suis tombé sur un "hic"...

 

Je dois créer un calque (pas de problème ) de couleur jaune=2 (pareil) mais d'un type de ligne "Cloture-Piquet-Bois".... Là, je coince car je n'arrive pas à utiliser correctement "tblsearch" pour savoir si ce type de ligne existe déjà.... Et pour compliquer le tout, ce type de ligne utilise une police de "Cloture1"... Et re "tblsearch.... J'ai commencé à écrire un truc... Mais je m'emmèles les nougats...

 

Si quelqu'un pouvait me filer un coup de mains... Je demande avant d'écrire tout le code et de le faire de travers (car çà, j'y arrive super bien ;) )

 

Voici ma tripatouille :

 

    ; Création d'un calque avec couleur et type de ligne------
(defun Ph_Crea_Calq  (Nom Coul Lign /)
 (setvar "cmdecho" 0)
 (cond
   (or
    (= Lign "Cloture-Piquet-Bois")
    (= Lign "Cloture-Piquet-Fer")
    )
   (setq
    Nom
    ("Cloture1") ; Nom de la police dans le DWG
    (setq Police ("simplex.shx")) ;Nom de la police windows (ttf ou shx)
    (setq Comp (1)) ; facteur de compression
    (setq Inclin (0)) ; Angle d'inclinaisonn

    (StylTxt (Nom Police Comp Inclin))
    ))

 (TypLign Lign)
 )


    ; Création d'un Type de ligne ----------------------------
(defun TypLign  (Nom /)
 (if (not (tblsearch "LTYPE" TypLign))
   (command "-typeligne" "ch" Nom "s:/config/Phalène/Phalène.lin" "" "" "" "" "" "" "" "")
   )
 )

    ; Création d'un style de texte-----------------------------
(defun StylTxt  (Nom Police Comp Inclin /)
 (setvar "cmdecho" 0)
 )

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)

Posté(e)

Salut,

 

Encore beaucoup d'erreurs de paranthèses

 

- Avec cond, comme je te le disais ailleurs, chaque groupe (condition/action_si_condition_remplie) doit être inclus à l'intérieur de paranthèses

 

- La valeur affectée à une variable, si c'est un entier, un réél, une chaine ou un symbole, ne doit pas être incluse à l'intérieur de paranthèses.

 

(defun Ph_Crea_Calq (Nom Coul Lign /)
 (setvar "cmdecho" 0)
 (cond
   [b]([/b](or
      (= Lign "Cloture-Piquet-Bois")
      (= Lign "Cloture-Piquet-Fer")
    ) ;_ fin de or
    (setq Nom "Cloture1") ;_ Nom de la police dans le DWG
    (setq Police "simplex.shx") ;_ Nom de la police windows (ttf ou shx)
    (setq Comp 1) ;_ facteur de compression
    (setq Inclin 0) ;_ Angle d'inclinaisonn

    (StylTxt (Nom Police Comp Inclin))
   [b])[/b] ;_ fin du groupe condition/action_si_condition_remplie
 ) ;_ fin de cond

 (TypLign Lign)
) ;_ fin de defun 

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Re (... suite)

 

(defun TypLign (Nom /)

(if (not (tblsearch "LTYPE" [surligneur]TypLign[/surligneur]))

(command "-typeligne" "ch" Nom "s:/config/Phalène/Phalène.lin" "" "" "" "" "" "" "" "")

)

)

 

Je suppose que tu voulais écrire (tblsearch "LTYPE" Nom) ?

 

(defun StylTxt (Nom Police Comp Inclin /)

(setvar "cmdecho" 0)

)

 

Je suppose qu'il manque des bouts ?

La routine StylTxt ne fait que mettre CMDECHO à 0 (qui est déjà à 0 quand la routine est appelée par la fonction Ph_Crea_Calq).

Soit tu gères les variables dans la fonction principale et elles conservent leurs valeurs lors des appels des sous routines, soit tu les gères pour chaque sous routines.

 

NOTA : quand on modifie les valeurs des variables système juste pour l'exécution d'un LISP, il est préférable de restaurer leurs valeurs initiales aux variables en fin de routine.

 

(defun MaRoutine (/ old_echo)

(setq old_echo (getvar "CMDECHO"))

(setvar old_echo 0)

... ;; Autant de lignes de codes et d'appels à des sous-routines

... ;; que tu veux, pour lesquels CMDECHO est désactivé.

(setvar "CMDECHO" old_echo)

)

 

À mon avis il est aussi préférable, quand on joue avec les variables système, de redéfinir la fonction *error* pour que les valeurs initiales des variables soient restaurées en cas d'erreur ou d'annulation. Tu peux faire une recherche dans les forums, le sujet a souvent été abordé, mais il n'y a là rien d'indispensable, c'est un plus que tu pourras étudier plus tard...

 

[Edité le 24/5/2006 par (gile)]

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

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é