Aller au contenu

Calque visible mais non sélectionable


Messages recommandés

Posté(e)

Salut,

 

Un petit truc vite fait en .NET (qui fournit une gestion d'évènement qui permet d'interagir pendant les sélections).

On pourrait faire plus élaboré avec une interface (palette ou boite de dialogue) pour spécifier les calques à rendre sélectionnable ou non, mais ce petit programme semble déjà répondre à la demande.

 

La commande LAYSELON active un 'réacteur' qui rend les objets sur les calques verrouillés non sélectionnables. La commande LAYSELOFF désactive ce 'réacteur'.

 

LayerSelectionHandler.zip contient la DLL à charger avec NETLOAD.

 

Le code source est sur AcadLabs

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

Posté(e)

Bonjour,

 

Merci Gilles toujours aussi réactif... c'est normal à force de jouer avec des réacteurs...

 

Du grand n'importe quoi oui,...

 

ça doit etre le soleil !?§ mais je ne vois qui a écrit ça Lilian ? :casstet:

 

 

ChrisTiTiTianTian (c'est un nouveau celui là)

Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...

cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)

Posté(e)

Salut à tous.

 

Bah ça tombe bien, j'en ai besoin tout desuite du réacteur et je viens de faire un essai.

C'est tout simplement, heu, comment dirais-je...

 

GENIAL !!! :D

 

C'est pile poils ce qu'il fallait. Plus besoin de passer par l'espace papier pour aller bosser dans l'espace objet.

 

Merci Gile ;)

Steven________________________________________

Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD.

Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD.

En rêve; AutoCAD sous Linux.

Posté(e)

Comment faire pour que le fichier dll se charge automatiquement lors de l'ouverture d'AutoCAD?

 

J'ai voulu le mettre dans le dossier d'installation d'AutoCAD, en l'occurence sur mon poste: C:\Program Files\Autodesk\AutoCAD Architecture 2011, mais ça n'a pas fonctionné lorsque j'ai relancé AutoCAD. J'ai du le recharger manuellement.

Steven________________________________________

Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD.

Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD.

En rêve; AutoCAD sous Linux.

Posté(e)
Comment faire pour que le fichier dll se charge automatiquement lors de l'ouverture d'AutoCAD?

 

 

Tu met la DLL dans un répertoire du chemin de recherche et colles le code ci-dessous à la ligne de commande d'AutoCAD. Une nouvelle clé sera créée dans la base de registre, avec 4 variables :

 

HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R18.2\ACAD-9001:40C\Applications\LayerSelectionHandler

 

 

((lambda (/ filename)
  (if (setq filename (findfile "LayerSelectionHandler.dll"))
    (mapcar
      '(lambda	(k v)
  (vl-registry-write
    (strcat "HKEY_CURRENT_USER\\"
	    (vlax-product-key)
	    "\\Applications\\LayerSelectionHandler"
    )
    k
    v
  )
)
      '("DESCRIPTION" "LOADCTRLS" "LOADER" "MANAGED")
      (list "Rendre les calques verrouillés non sélectionnables" 2 filename 1)
    )
    (princ (strcat "\nLe fichier 'LayerSelectionHandler.dll' est introuvable"))
  )
)
)

 

 

Je vais essayer de faire une version plus élaborée avec une sorte de variable système, je lui ajouterai deux commandes pour créer ou supprimer la clé.

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

Posté(e)

Ca marche nickel :D

j'attends de voir la suite si c'est encore plus élaboré. Mais là, c'est déjà super :)

Steven________________________________________

Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD.

Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD.

En rêve; AutoCAD sous Linux.

Posté(e)

Voilà,

 

LAYLOCKSELECT fonctionne comme une variable système enregistrée dans le registre pour l'utilisateur courant (HKEY_CURRENT_USER\Software\Gile\LayLockSelect).

Les valeurs possibles sont :

0 : les claques verrouillés sont sélectionnables

1 : les claques verrouillés ne sont pas sélectionnables

 

Deux commandes ont été ajoutées :

LayLockSelRegister : crée une clé dans la base de registre pour le chargement automatique de la DLL (qui doit être enregistrée dans une répertoire de recherche d'AutoCAD).

LayLockSelUnregister : supprime cette clé du registre.

 

Nouvelle version (optimisations mineures)

 

LayLockSelectVariable.zip.

 

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

Posté(e)

Bien sûr (command "NETLOAD" ...) dans AutoCAD.lsp fonctionne aussi, mais l'enregistrement dans la base de registre est "plus propre" (c'est comme ça que les DLL .NET AutoCAD natives sont chargées) et avec cette dernière version, il suffit de lancer la commande LayLockSelRegister pour que l'enregistrement se fasse.

 

Je sais qu'avec 2012, est arrivé un nouveau système de déploiement des applications (Autoloader) beaucoup plus pratique mais je ne l'ai pas encore testé.

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

Posté(e)

Re,

 

Merci Gilles,

 

avec cette dernière version, il suffit de lancer la commande LayLockSelRegister pour que l'enregistrement se fasse.

 

Pour les autres ":dll" que tu as faites et que j'utilise, je peux alors reprendre l'expression donnée (réponse 2 de cette page) ci_dessus en changeant le nom de la ":dll", ce sera mieux que sur le "acad.lsp" ou est-ce inutile ?

 

un nouveau système de déploiement des applications

 

Peux_tu nous en dire plus ? Ou au moins ou trouver l'info,...

 

Merci encore,

Civil 3D 2025 - COVADIS_18.3b

https://www.linkedin...3%ABt-95313341/

Posté(e)

 

Pour les autres ":dll" que tu as faites et que j'utilise, je peux alors reprendre l'expression donnée (réponse 2 de cette page) ci_dessus en changeant le nom de la ":dll", ce sera mieux que sur le "acad.lsp" ou est-ce inutile ?

 

C'est comme tu veux, tu peux aussi utiliser ce LISP :

 

;;; NetStartupAutoLoad
;;; Inscrit une application .NET dans la base de registre pour
;;; un chargement automatique au démarrage
;;;
;;; Arguments
;;; key       : la clé de l'application (string)
;;; descr     : une description (string)
;;; filename  : le chemin complet de la dll ou le nom du fichier avec l'extension .dll
;;;             si le fichier est dans un chemin de recherche (string)
;;;
;;; Exemple:
;;; (NetStartupAutoLoad "LayLockSelect"
;;;                     "Sélection des calques verrouillés"
;;;                     "LayLockSelectVariable.dll"
;;; )

(defun NetStartupAutoLoad (key descr filename / fullname)
 (vl-load-com)
 (if (setq fullname (findfile filename))
   (mapcar
     '(lambda (k v)
        (vl-registry-write
          (strcat "HKEY_CURRENT_USER\\"
                  (vlax-product-key)
                  "\\Applications\\"
                  key
          )
          k
          v
        )
      )
     '("DESCRIPTION" "LOADCTRLS" "LOADER" "MANAGED")
     (list descr 2 filename 1)
   )
   (princ (strcat "\nLe fichier \"" filename "\"  est introuvable"))
 )
)

 

Et pour supprimer la clé :

 

;;; NetUnReg
;;; Supprime la clé et toutes les sous clés de la base de registre
;;;
;;; Arguments
;;; key : la clé de l'application (string)
;;;
;;; Exemple: (NetUnReg "MyApp2")

(defun NetUnReg (key / regpath)
 (vl-load-com)
 (setq regpath (strcat "HKEY_CURRENT_USER\\"
                       (vlax-product-key)
                       "\\Applications\\"
                       key
               )
 )
 (foreach k (vl-registry-descendents regpath)
   (vl-registry-delete (strcat regpath "\\" k))
 )
 (vl-registry-delete regpath)
)

 

 

 

Peux_tu nous en dire plus ? Ou au moins ou trouver l'info,...

 

Voir ici par exemple. Ou faire une recherche sur Google avec 'AutoCAD 2012 Autoloader'.

 

 

AutoCAD 2012 possède deux nouveaux répertoires dans lesquels il suffit de placer des dossiers (*.bundle) pour que ceci soient automatiquement chargés

 

- pour l'utilisateur courant :

 

Windows XP :

 

C:\Documents and Settings\[login]\Application Data\Roaming\Autodesk\ApplicationPlugins\

 

Windows 7 :

 

C:\Users\[login]\AppData\Roaming\Autodesk\ApplicationPlugins\

 

 

- ou pour tous les utilisateurs :

 

C:\Program Files\Autodesk\ApplicationPlugins\

 

 

Chaque dossier (*.bundle) contient un sous dossier (Contents) qui contient le(s) fichier(s) de l'application (.dll, lsp, vlx, etc...) et un fichier XML (PackageContents.xml) qui décrit l'application et la façon de la charger.

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

Posté(e)

Re,

 

Ok !

 

C'est comme tu veux, tu peux aussi utiliser ce LISP :

 

Donc l'une ou l'autre solution n'a pas d'influence sur quoi que ce soit ?

 

Merci pour les précisions sur "Autoloader"

 

Mais c'est quoi exactement la révolution ? (Et la vidéo en anglais ne m'a guerre éclairé, ...)

 

Plus de AutoCAD.lsp perso ?

 

Désolé mais je n'ai pas assez de connaissances en la matière pour comprendre l'intérêt du truc,...:exclam:

 

Merci encore,

Civil 3D 2025 - COVADIS_18.3b

https://www.linkedin...3%ABt-95313341/

Posté(e)

Donc l'une ou l'autre solution n'a pas d'influence sur quoi que ce soit ?

Passer par la base de registre est plus discret et (un peu) plus rapide (pas d'appel de commande).

 

Mais c'est quoi exactement la révolution ? (Et la vidéo en anglais ne m'a guerre éclairé, ...)

 

Plus de AutoCAD.lsp perso ?

Pour l'utilisateur lambda, ça devrait simplifier considérablement les problèmes de déploiement et de chargement automatique.

Si le développeur fournit un dossier *.bundle pour son application, l'utilisateur n'a qu'à le copier dans le bon répertoire sans se soucier de savoir si l'application est un LISP, une DLL .NET, un ARX... et de comment la charger automatiquement (les clés dans le registre sont créées automatiquement). Pour supprimer l'application, il suffit de supprimer le dossier (la clé devrait être automatiquement supprimée).

Ces dossier seront automatiquement migrés lors de mises à jour d'AutoCAD.

 

Pour le développeur, c'est un peu plus de travail que de fournir simplement le fichier .lsp, .dll ou autre, il faut écrire le fichier XML, mais beaucoup moins que de faire un setup qui s'occuperait de tout ça.

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

Posté(e)

C'est quoi le but du test ?

 

Sans utiliser d'autre technique de chargement, mettre le dossier 'LayLockSelVar.bundle' dans le dossier :

C:\Program Files\Autodesk\ApplicationPlugins\, par exemple, ouvrir AutoCAD 2012 et voir si la commande/variable système LAYLOCKSELECT fonctionne

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

Posté(e)

Re,

 

J'ai testé mais la commande ne fonctionne pas !

 

Peut_être est ce lié au chemin d'install ?

 

En ce qui me concerne =>

 

D:\_LOGICIEL MAP 3D 2012\AutoCAD Map 3D 2012

 

 

Dans le doute j'ai copié également le dossier ApplicationPlugins

 

C:\Documents and Settings\All Users\Application Data\Autodesk\AutoCAD Map 3D 2012\R18.2\fra\ApplicationPlugins\LayLockSelVar.bundle

 

Ainsi que dans :

 

C:\Documents and Settings\Lilian LESCOUËT\Application Data\Autodesk\AutoCAD Map 3D 2012\R18.2\fra\ApplicationPlugins

 

 

Commande: LAYLOCKSELECT

Commande inconnue "LAYLOCKSELECT". Appuyez sur F1 pour obtenir de l'aide.

Civil 3D 2025 - COVADIS_18.3b

https://www.linkedin...3%ABt-95313341/

Posté(e)

J'ai peut-être fait quelque chose de travers, mais je viens de regarder à nouveau cette video et je ne vois pas quoi...

 

J'essaye de mieux expliquer la procédure :

Avec AutoCAD fermé (même s'il semble que ça fonctionne aussi avec AutoCAD ouvert), copier le dossier "LayLockSelVar.bundle" soit dans :

C:\Documents and Settings\[login]\Application Data\Roaming\Autodesk\ApplicationPlugins

soit dans :

C:\Program Files\Autodesk\ApplicationPlugins

 

Les répertoires ApplicationPlugins devraient être présents par défaut (note qu'il n'est pas question du répertoire d'AutoCAD 2012 ou d'AutoCAD MAP 3D 2012 mais du dossier parent Autodesk)

 

Puis relancer AutoCAD ou MAP) et la DLL devrait être chargée.

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

Posté(e)

Re ,

 

OUPS !

 

Désolé de t'avoir fait perdre ton temps,.... :cool:

 

Je n'avais pas compris ça =>

 

(note qu'il n'est pas question du répertoire d'AutoCAD 2012 ou d'AutoCAD MAP 3D 2012 mais du dossier parent Autodesk)

 

Et en regardant dans ce dossier, il y à bien :

 

Les répertoires ApplicationPlugins devraient être présents par défaut

 

 

(même s'il semble que ça fonctionne aussi avec AutoCAD ouvert)

 

Je confirme ! Mon MAP était ouvert lorsque j'ai inséré le dossier "LayLockSelVar.bundle" dans le bon répertoire,....

 

TOUT fonctionne à merveille maintenant !

 

Commande:

LAYLOCKSELECT

Entrez une nouvelle valeur pour LAYLOCKSELECT : 1

 

Commande:

LAYLOCKSELECT

Entrez une nouvelle valeur pour LAYLOCKSELECT : O

 

Et bien entendu le prog joue son rôle,////

 

Peut_être(vraisemblablement même !) un peu plus de travail pour le développeur mais alors quelle simplicité pour l'utilisateur "Lambda" (dont je fais partie). Le placement du dossier au bon endroit(:cool: ) et hop, ça roule,

 

Du coup, le lisp que tu préconises plus haut n'a plus lieu d'être à partir de cette version,...

 

Un truc Sympa de la part d'Autodesk, non ? Pour les non développeurs mais utilisateur de prog perso glannés ci et là, (Heu, tu vas me dire encore faut-il que le programmeur se donne la peine de faire le "xml" et que tout le monde fasse comme toi, s'y mettre, c'est pas gagné,...)

 

 

Bravo Gilles tu est encore à la pointe des nouveautés ! :P :D

 

Et encore désolé, :(

Civil 3D 2025 - COVADIS_18.3b

https://www.linkedin...3%ABt-95313341/

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é