coxsurf56 Posté(e) le 14 juin 2007 Posté(e) le 14 juin 2007 Salutest il possible de memoriser le style de cote en cours dans une variablepour pourvoir cote un element avec un autre style de cote et revenir automatique a celui memorisercomme pour les calques(setq Calq (getvar "CLAYER")).....
(gile) Posté(e) le 14 juin 2007 Posté(e) le 14 juin 2007 Salut, (setq dim (getvar "DIMSTYLE")) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
coxsurf56 Posté(e) le 14 juin 2007 Auteur Posté(e) le 14 juin 2007 mercica marche en ligne de commandemais j'essaye de rajouter ca a un lisp que tu as cree :) mais ca ne et je ne suis pas doue si tu peux le corriger merci d'avance ;;; INTRODUCTION du PROGRAMME - Redéfinition de *error* (defun INTRO_PRG_ERR () (vl-load-com) (vla-StartUndoMark (vla-get-ActiveDocument (vlax-get-acad-object))) (SAVE&SET_VAR "cmdecho" 0) (command "_undo" "_mark") (setq Sauv_EXerror *error*) ; enregistrement *error* autocad ; Enregistrement du environnement Actif (SCU / Calque /... (setq list_env_actif (list (getvar "ucsorg") (getvar "ucsxdir") (getvar "ucsydir") (getvar "ucsicon") (getvar "clayer") (getvar "orthomode") (getvar "dimstyle") (getvar "osmode"))) ; Gestion des Erreur remplaçant celle d'Autocad (setq *error* REDEF_ERROR) ) ;;; ROUTINE de GESTION des ERREURS remplaçant celle d'Autocad (defun REDEF_ERROR (msg) (if (or (= msg "Fonction annulée") (= msg "Function cancelled") (= msg "quitter / sortir abandon") (= msg "quit / exit abort")) (princ) (princ (strcat "\nErreur: " msg)) ) (command "_undo" "_back") (END_PRG_ERR) ) ;;; ROUTINE ENREGISTREMENT VARIABLE+MODIF VARIABLE ((gile) cadXP) (defun SAVE&SET_VAR (var val) (cond ((getvar var) (setq SavedSysVarLst (cons (list 'setvar var (getvar var)) SavedSysVarLst)) (if val (setvar var val))) ) ) (defun c:CBC () (INTRO_PRG_ERR) (setq Calq (getvar "CLAYER")) (setq dim (getvar "DIMSTYLE")) (SAVE&SET_VAR "CLAYER" "CHAINAGE") (save&SET_VAR "DIMSTYLE" "ech10-cm") (command "_DIMLINEAR" Pause Pause Pause) (setvar "CLAYER" Calq) (setvar "DIMSTYLE" dim) (princ) (END_PRG_ERR) ) ;;; RESTORE_VAR ;;; Restaure leurs valeurs initiales aux variables système de "SavedSysVarLst" ;;; ;;; ex: (RESTORE_VAR) ;;; -> (getvar "orthomode") : 0 ;;; -> (getvar "autosnap") : 63 ;;; -> SavedSysVarLst : nil (defun restore_var () (mapcar 'eval SavedSysVarLst) (setq SavedSysVarLst nil) ) ;;; FIN de PROGRAMME - ; retour *error* initial (defun END_PRG_ERR () ; Restauration de l'environnement Actif enregistré (command "_ucs" "_w" "_ucs" "_3" "_non" '(0 0 0) "_non" (nth 1 list_env_actif) "_non" (nth 2 list_env_actif) "_ucs" "_o" "_non" (trans (nth 0 list_env_actif) 0 1)) (setvar "ucsicon" (nth 3 list_env_actif)) (setvar "clayer" (nth 4 list_env_actif)) (setvar "orthomode"(nth 5 list_env_actif)) (setvar "osmode" (nth 6 list_env_actif)) (setvar "dimstyle" (nth 7 list_env_actif)) (mapcar 'eval SavedSysVarLst) ;remise à nil (setq *error* Sauv_EXerror list_env_actif nil SavedSysVarLst nil Sauv_EXerror nil scu_init nil) (vla-EndUndoMark (vla-get-ActiveDocument (vlax-get-acad-object))) )
(gile) Posté(e) le 14 juin 2007 Posté(e) le 14 juin 2007 Je ne comprends pas bien ce que tu veux faire mais ça me semble bien compliqué, si c'est juste pour pour faire une cote linéaire dans un calque et un style de cote donné. Il y a beaucoup de redondances dans ton code, soit tu fait :(vla-StartUndoMark (vla-get-ActiveDocument (vlax-get-acad-object))) soit tu fait :(command "_undo" "_mark")mais il n'est pas nécessaire de faire 2 fois la même chose. Quant à la variable DIMSTYLE tu la sauvegardes et la restaure 3 fois !- dans la liste list_env_actif - avec la routine Save&SetVar- dans la variable dim Si tu utilises Save&SetVar, sert t'en donc pour toutes les variables système que tu veux sauvegarder puis restaurer. Si tu ne changes pas la valeur de la variable, tu peux faire :(Save&SetVar"orthomode" nil) et si la valeur de ORTHOMODE est changée pendant les "pause", la valeur initiale sera resaurée quand tu fais (RestoreVar) ou (mapcar 'eval SavedSysVarLst) - là aussi un seul suffit. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
coxsurf56 Posté(e) le 15 juin 2007 Auteur Posté(e) le 15 juin 2007 saluten fait je comprend pas trop le lisp donc je bidouille plus qu'autre choseJe viens de m'apercevoir que la commande dymstyle est en lecture seul donc impossible de lui donner une valeurpar contre par la commande on peut changer le style de cotedonc je vais me rabattre sur des ligne de commande a la suitemerci quand meme pour ton aide
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