Bonjour,
Après une modification de bloc si ucsfollow est à 1, la fermeture de l'éditeur de bloc entraîne un retour au point 0.0. Problème connu d'Autodesk:
zoom avant après bclose
Voici un lisp qui m'a permis d'utiliser les réacteurs : Si ucsfollow à 1 = mise à 0 de ucsfollow automatique à l'ouverture de l'éditeur de bloc et mise à 1 de ucsfollow à la fermeture de l'éditeur de bloc.
(defun c:ucs1 () (kd:ucsfollow T)) ;;activation manuelle
(defun c:ucs0 () (kd:ucsfollow nil)) ;;désactivation manuelle
(defun kd:ucsfollow ( on )
;;nettoyage des réacteurs
(foreach grp (vlr-reactors :vlr-command-reactor)
(foreach obj (cdr grp)
(if (= "kd:ucsfollow" (vlr-data obj))
(vlr-remove obj)
)
)
)
(or (and on
(vlr-command-reactor "kd:ucsfollow"
'(
(:vlr-commandwillstart . kd:ucs_off)
(:vlr-commandended . kd:ucs_on)
(:vlr-commandcancelled . kd:ucs_on)
(:vlr-commandfailed . kd:ucs_on)
)
)
(princ "\nreacteur ucsfollow sur bedit actif")
)
(princ "\nreacteur ucsfollow sur bedit inactif")
)
(princ)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun kd:ucs_off (reac arg )
(if (and (wcmatch (car arg) "BEDIT,-BEDIT,BCLOSE")
(= 1 (getvar "ucsfollow"))
)
(progn
(setq *ucsfollow* T)
(setvar "ucsfollow" 0)
)
)
(princ)
)
;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;
(defun kd:ucs_on (reac arg)
(if (and *ucsfollow*
(= (getvar "UCSFOLLOW") 0)
(wcmatch (car arg) "BEDIT,-BEDIT,BCLOSE")
)
(setvar "UCSFOLLOW" 1)
)
(setq *ucsfollow* nil)
(princ)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;execution auto au lancement
;;à intégrer à acaddoc si existe,
;|((lambda ( ) (vl-load-com)
(if (= 'list (type s::startup))
(if (not (member '(kd:ucsfollow t) s::startup))
(setq s::startup (append s::startup '((kd:ucsfollow t))))
)
(defun-q s::startup nil (kd:ucsfollow t))
)
(princ)
)
)|;