autospeed Posté(e) le 17 juillet 2012 Posté(e) le 17 juillet 2012 Lors des traitements de plans , je suis toujours géné par le fait que certains calques soient verrouillés. Je recherche donc un petit lisp qui lancé avec superautoscript , permettrait de dévérouiller automatiquement les calques d'un dessin. Auteur du logiciel AutospeedAuteur de la théorie du site www.kheops.bizAuteur de nombreux livres
(gile) Posté(e) le 17 juillet 2012 Posté(e) le 17 juillet 2012 Salut, ;;; LayerUnLockAll (gile) ;;; Déverrouille tous les calques ;;; ou re-verrouille les claques précédemmment déverouillés ;;; ;;; Argument : T ou nil ;;; ;;; Utilisation : ;;; (LayerUnLockAll T) déverrouille tous les calques verrouillés ;;; (LayerUnLockAll nil) re-verrouille les calques déverrouillés (vl-load-com) (defun-q layerunlockall (flag / lst lay) (setq lst nil) (if flag (vlax-for l *layers* (and (= (vla-get-Lock l) :vlax-true) (setq lst (cons (vla-get-name l) lst)) (vla-put-Lock l :vlax-false) ) ) (progn (foreach n lst (and (setq lay (GetItem *layers* n)) (vla-put-Lock lay :vlax-true) ) ) (setq lst nil) ) ) (setq layerunlockall (cons (car layerunlockall) (cons (list 'setq 'lst (list 'quote lst)) (cddr layerunlockall) ) ) ) lst ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
autospeed Posté(e) le 17 juillet 2012 Auteur Posté(e) le 17 juillet 2012 Merci Gile mais si il y a un argument à passer je ne peux pas mettre ce lisp en automatique pour traiter un ensemble de fichiers.Le but est juste de déverrouiller tout. Auteur du logiciel AutospeedAuteur de la théorie du site www.kheops.bizAuteur de nombreux livres
(gile) Posté(e) le 17 juillet 2012 Posté(e) le 17 juillet 2012 Merci Gile mais si il y a un argument à passer je ne peux pas mettre ce lisp en automatique pour traiter un ensemble de fichiers. Bien sur que si, avec le LISP enregistré sous "LayerUnLockAll.lsp" dans un répertoire des chemins de recherche, au début de ton script tu fais :(load "LayerUnLockAll.lsp") (LayerUnLockAll T)et, si tu veux restaurer l'état initial des calques, à la fin du script, avant d'enregistrer le dessin :(LayerUnLockAll nil) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Eric Posté(e) le 17 juillet 2012 Posté(e) le 17 juillet 2012 Sans lisp on peut aussi faire -calque d * Eric est formateur, revendeur sur AutoCAD LT, DraftSight, ZWCAD, SketchUp et PDF2CAD
autospeed Posté(e) le 17 juillet 2012 Auteur Posté(e) le 17 juillet 2012 Sans lisp on peut aussi faire -calque d * Ca c'est top avec superautoscript ça marche super et c'est tout ce qu'il me fallait en fait. merci à tous.Ou est ce que je pourrais trouver un guide concernant la manière d'écrire des scripts dans superautoscript ? Auteur du logiciel AutospeedAuteur de la théorie du site www.kheops.bizAuteur de nombreux livres
VDH-Bruno Posté(e) le 19 juillet 2012 Posté(e) le 19 juillet 2012 Bonjour, Juste une petite intervention pour donner à ceux qui ne l’auraient pas sur leurs postes les variables/fonctions associées utilisé dans le code de (gile)...;;; GetItem (gile) ;;; Retourne le vla-object de l'item s'il est présent dans la collection ;;; ;;; Arguments ;;; col : la collection (vla-object) ;;; name : le nom de l'objet (string) ou son indice (entier) ;;; ;;; Retour : le vla-object ou nil (defun GetItem (col name / obj) (vl-catch-all-apply (function (lambda () (setq obj (vla-item col name))))) obj) Et(or *layers* (setq *layers* (vla-get-layers (vla-get-activeDocument (vlax-get-acad-object))))) Car personnellement j’apprécie beaucoup les fonctions réversibles (au moins pendant la durée de la session active) et je trouve toujours très plaisant cette utilisation de defun-q pour permettre la redéfinition de fonction et éviter ainsi l’emploi d’une variable global supplémentaire. Sinon le passage d’argument peut également se définir dans une fonction..(defun c:deverrouille () (LayerUnLockAll T) (princ)) (defun c:verrouille () (LayerUnLockAll nil) (princ)) A+ Apprendre => Prendre => Rendre
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