Aller au contenu

Classement

Contenu populaire

Affichage du contenu avec la meilleure réputation le 17/11/2023 dans toutes les zones

  1. On peut écrire dans le registre AutoCAD, mais comme toujours en programmation, il faut le faire prudemment. Par exemple, on peut depuis AutoCAD 2012, créer des variables système personnalisées en écrivant des clés dans la base de registre (En LISP on ne peut écrire que dans HKCU, donc les variables seront définies 'par utilisateur). Traduction de l'aide .NET pour le format des clés de variables système: [HKEY_CURRENT_USER\{ProductRegistryRoot}\Variables\{Nom de la variable}] @="{valeur par défaut}" : Requis, sera converti en PrimaryDataType "PrimaryType"=dword:{Type principal} : Requis "SecondaryType"=dword:{Type secondaire} : Optionnel "TypeFlags"=dword:{Drapeau de type} : Optionnel "StorageType"=dword:{Type de stockage} : Requis "Owner"="{Nom de l'application|exe}" : Optionnel "Range"="{minimum},{maximum}" : Optionnel, s'applique aux type principaux RTREAL, RTANG, RTSHORT et RTLONG "PrimaryType" RTREAL = 5001 Nombre réel RTSHORT = 5003 Nombre entier (16 bits) RTSTR = 5005 Chaîne de caractère RTLONG = 5010 Nombre entier (32 bits) "SecondaryType" Angle = 5 La variable représente une valeur angulaire. Area = 3 La variable représente un valeur d'aire. Valable uniquement lorsque le type principal est RTREAL Boolean = 1 La variable est un booléen. Valable uniquement lorsque le type principal est RTSHORT Distance = 4 La variable représente une valeur de distance. Valable uniquement lorsque le type principal est RTREAL Last = 6 Marque le dernier élément de l'énumération. None = 0 Aucun type de données secondaires n'est spécifié. SymbolName = 2 La variable est un nom de symbole RealDWG. Valable uniquement lorsque le type principal est RTSTR UnitlessReal = 6 La variable représente une valeur réelle sans unité. "StorageType" PerSession = 1 Etendue de l'application, ne persiste pas. PerUser = 2 Etendue de l'application, persiste par utilisateur. PerProfile = 3 Etendue de l'application, persiste par profil AutoCAD. PerDatabase = 4 Etendue du document, persiste dans le dessin. "TypeFlags" Chatty = 8 La variable envoie des notifications lorsqu'elle prend la même valeur que la précédente. Les variables ignorent normalement les tentatives de définir la même valeur deux fois de suite. DotMeansEmpty = 2 Le caractère . doit être interprété comme une chaîne vide. Valable uniquement lorsque le type principal est RTSTR None = 0 Aucun indicateur de type n'est spécifié. NoUndo = 4 La variable n'enregistre pas l'annulation. SpacesAllowed = 1 Les espaces sont autorisés dans les valeurs des variables. Valable uniquement lorsque le type principal est RTSTR Un exemple pour créer une variable système persistante dans le document, nommée "SOME_INTEGER", de type entier compris entre 0 et 15. ((lambda (varName / rootKey) (setq rootKey (strcat "HKEY_CURRENT_USER\\" (vlax-user-product-key) "\\Variables\\" ) ) (foreach p '(("" "0") ; valeur par défaut ("PrimaryType" 5003) ; nombre entier ("StorageType" 4) ; persiste dans le document ("LowerBound" 0) ; valeur minimale ("UpperBound" 15) ; valeur maximale ) (apply 'vl-registry-write (cons (strcat rootKey varName) p)) ) ) "SOME_INTEGER" ; nom de la variable ) La variable nouvellement créée est accessible avec les fonctions LISP setvar et getvar et avec la commande MODIFVAR. Commande: (getvar 'some_integer) 0 Commande: MODIFVAR Entrez le nom de la variable ou [?]: some_integer Entrez une nouvelle valeur pour SOME_INTEGER <0>: 42 Nécessite un entier entre 0 et 15. Entrez une nouvelle valeur pour SOME_INTEGER <0>: 7 Commande: (getvar 'some_integer) 7 Commande: (setvar 'some_integer -1) ; erreur: paramètre de la variable AutoCAD rejeté: SOME_INTEGER -1 Commande: (getvar 'some_integer) 7
    2 points
  2. Salut, Le dictionnaire "ACAD_LAYERFILTERS" n'est pas dans le dictionnaire des objets nommés (namedobjdict) il est (s'il y a bien des filtres de calque) dans le dictionnaire d'extension de la table des calques (LayerTable). PS: gc:DictDataList est une fonction aujourd'hui inutile qui était censée agir comme vlax-ldata-list.
    1 point
  3. Bonjour Thierry, J'ai eu l'impression de lire @didier 😂 MAIS tu as raison, je me suis trompé de terme 😳. Je parlais de la largeur 😉.
    1 point
  4. Un autre exemple avec une variable nommée "SOME_ANGLE", persistante par utilisateur, de type nombre réel (valeur angulaire) ((lambda (varName / rootKey) (setq rootKey (strcat "HKEY_CURRENT_USER\\" (vlax-user-product-key) "\\Variables\\" ) ) (foreach p '(("" "0.0") ; valeur par défaut ("PrimaryType" 5001) ; nombre réel ("SecondaryType" 5) ; valeur d'angle ("StorageType" 2) ; persiste par utilisateur ) (apply 'vl-registry-write (cons (strcat rootKey varName) p)) ) ) "SOME_ANGLE" ; nom de la variable ) Avec le type valeur angulaire, MODIFVAR utilise l'unité angulaire courante (getvar/setvar utilisent toujours les radians). Commande: (getvar 'some_angle) 0.0 Commande: (setvar 'some_angle (/ pi 6)) 0.523599 Commande: MODIFVAR Entrez le nom de la variable ou [?]: some_angle Entrez une nouvelle valeur pour SOME_ANGLE <30>: 180 Commande: (getvar 'some_angle) 3.14159
    1 point
  5. Au top 👍Il ne me reste plus qu'à le bricoler pour mes propres besoins. Caniveau à fente, caniveau U, police, calque, etc.... Merci @bonuscad.
    1 point
×
×
  • 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é