Aller au contenu

Cherche un lisp pour dévérrouiller les calques d'un dessin


autospeed

Messages recommandés

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 Autospeed

Auteur de la théorie du site www.kheops.biz

Auteur de nombreux livres

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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 Autospeed

Auteur de la théorie du site www.kheops.biz

Auteur de nombreux livres

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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é