Aller au contenu

Recherche une variable


Patrick_35

Messages recommandés

Nan, rien...

 

Il n' y a, semblerait-il, que la commande GESTSTYLE d'après ce que j'ai trouvé dans les méandres de l'aide. Mais ce n'est pas ce que tu cherches... :huh: C'est vague, on ne trouve rien de plus...

 

La piste à Phil peut-être...

Seuls nous allons vite, ensemble nous allons plus loin...

CPU Intel 3,5Go / Nvidia RTX-3090

AutoCad (Architecture) 2022 - Lumion PRO

BMW R-1200-RT, c'est moche, oui... je sais...

 

www.neda.ch

Lien vers le commentaire
Partager sur d’autres sites

Salut Patick_35

 

Je vais me rallier à l’avis de lecrabe, j’ai été jusqu'a déclaré un réacteur de type vlr-sysvar-reactor, et cela n’a rien donné …

 

(or *acadvarreactor*
   (setq *acadvarreactor* (vlr-sysvar-reactor nil '((:vlr-sysVarChanged . trace-sysvar-callback))))
)
(defun trace-sysvar-callback (rea sysvar) (princ "\n") (princ (car sysvar)))

 

A+ Bruno

Apprendre => Prendre => Rendre

Lien vers le commentaire
Partager sur d’autres sites

Merci à vous tous pour vos réponses.

Je n'ai rien trouvé; vous m'avez confirmé qu'apparemment il n'y en a pas et Phil m'a indiqué où chercher. Cela m'a donné une idée et du coup, trois petit lisps.

 

Pour faire Afficher ou pas le style de tracé sur l'onglet (layout) actif

0 = Inactif et 1 le contraire ;)

(defun c:ast(/ chx def lay)
 (vl-load-com)
 (setq lay (vla-get-activelayout (vla-get-activedocument (vlax-get-acad-object)))
def (if (eq (vla-get-showplotstyles lay) :vlax-true) "1" "0")
 )
 (initget "0 1")
 (setq chx (getkword (strcat "\nValeur de la variable AST [0/1] <" def "> : ")))
 (or (not chx) (eq chx rep)
   (if (eq chx "0")
     (vla-put-showplotstyles lay :vlax-false)
     (vla-put-showplotstyles lay :vlax-true)
   )
 )
)

 

Pour afficher sur tous les onglets (layout) les styles de tracé

(defun c:aston(/ lay)
 (vlax-for lay (vla-get-layouts (vla-get-activedocument (vlax-get-acad-object)))
   (vla-put-showplotstyles lay :vlax-true)
 )
 (princ)
)

 

Pour ne plus afficher sur tous les onglets (layout) les styles de tracé

(defun c:astoff(/ lay)
 (vlax-for lay (vla-get-layouts (vla-get-activedocument (vlax-get-acad-object)))
   (vla-put-showplotstyles lay :vlax-false)
 )
 (princ)
)

 

ps : ast = afficher style tracé

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

Ou alors c'est stocké dans les variables d'environnement... (getenv) (setenv)

 

J'ai bien une liste, mais elle date des années 2002 environ, depuis il doit y en avoir une floppée qui se soient rajoutées.

"ACADALTMENU"

"AcadClassic"

"ACADLOGFILE"

"ACADLspAsDoc"

"ActiveAssistance"

"AlarmOnError"

"ARXDemandLoad"

"AssignInsertUnits"

"AuditControlFlags"

"AutomaticSaveMinutes"

"AutoSaveFile"

"AutoSnapColor"

"AutoSnapPolarAddAng"

"AutoSnapPolarAng"

"AutoSnapPolarDistance"

"AutoSnapPolarMode"

"AutoSnapShowAperture"

"AutoSnapSize"

"AutoSnapTrackPath"

"Autotracking vector"

"AVEMAP"

"Background"

"BmpOutCompression"

"CheckDrawingSignature"

"CmdHistLines"

"CmdLine.BackColor"

"CmdLine.FontFace"

"CmdLine.FontHeight"

"CmdLine.FontItalic"

"CmdLine.FontPitchAndFamily"

"CmdLine.FontWeight"

"CmdLine.ForeColor"

"CmdVisLines"

"CommandDialogs"

"ContextMenus"

"CreateViewports"

"CursorSize"

"CustomColors"

"CustomDictionary"

"DatabaseTablesOpenMode"

"DatabaseWorkSpacePath"

"DefaultFormatForSave"

"DefaultLayerZeroPlotStyle"

"DefaultPlotStyle"

"DefaultPlotToFile"

"DemandLoadingModeler"

"DigitizerArbitration"

"DisableGraphicsTextArea"

"DisableScreenMenuArea"

"DisableTrueColor"

"EdgeMode"

"EmergencyFont"

"EntityExtentVariant"

"ExplorerInsertUnits"

"FileDialog"

"FontFace"

"FontHeight"

"FontItalic"

"FontMappingFile"

"FontPitchAndFamily"

"FontWeight"

"GripBlock"

"GripColor"

"GripHot"

"Grips"

"GripSize"

"HatchAlertDisabled"

"HatchType"

"HideWarningDialogs"

"ImageHighlight"

"ImportPathInfo"

"InsertUnitsDefSource"

"InsertUnitsDefTarget"

"IsaveBackupDwg"

"IsavePercent"

"Layout background"

"LayoutRegenControl"

"LayoutXhairPickboxEtc"

"LineWeightDisplayScale"

"LineWeightUnits"

"LoadPaletteBySession"

"LOGFILE"

"LogFileOpen"

"LogFilePath"

"MainDictionary"

"MaxApp"

"MaxArray"

"MaxDwg"

"MaxHatch"

"MaxOctTreeNodesToAllocate"

"MaxSortEntries"

"Measureinit"

"MenuFile"

"MenuOptionFlags"

"MiddleButtonPan"

"ModeBits"

"MonoVectors"

"MRUFilesToList"

"MTextEditor"

"NetLocation"

"NoStartUpDialog"

"ObjectARXSupportPath"

"ObjectDBXSupportPath"

"ObjectSnapCursorSize"

"OffsetCurveGapType"

"OleHide"

"OsnapCoord"

"PickAdd"

"PickAuto"

"PickBox"

"PickDrag"

"PickFirst"

"PlineType"

"Plot preview background"

"PlotRotationMode"

"PlotSpoolerDirectory"

"PlotSpoolerNode"

"PostscriptQuality"

"PrinterConfigDir"

"PrinterDescDir"

"PrinterStyleSheetDir"

"PROXYWEBSEARCHNUMBER"

"PSOUT_PrologFileName"

"QAFlags"

"RasterPreview"

"RtDisplay"

"SaveFilePath"

"ScreenMenu"

"Scrollbars"

"SDF_AttributeExtractTemplateFile"

"SDIMode"

"ShowFullPathInTitle"

"ShowHyperlinkCursor"

"ShowHyperlinkToolTip"

"ShowOleScaleDialog"

"ShowPaperBackground"

"ShowPaperMargins"

"ShowPaperSize"

"ShowPlotSetup"

"ShowPrintBorder"

"ShowProxyDialog"

"ShowProxyGraphics"

"ShowRuler"

"ShowTabs"

"SnapType"

"SQLIndexInDwg"

"StatusLine&CoordinateDisplay"

"TempDirectory"

"TemplatePath"

"TextFill"

"TextWindow.BackColor"

"TextWindow.FontFace"

"TextWindow.FontHeight"

"TextWindow.FontItalic"

"TextWindow.FontPitchAndFamily"

"TextWindow.FontWeight"

"TextWindow.ForeColor"

"ToolTips"

"Trim&ExtendProjectMode"

"Trimmode"

"UCSAxisAng"

"UcsIcon3d"

"UcsIconActiveColor"

"UcsIconCone"

"UcsIconLineWidth"

"UcsIconNonActiveColor"

"UcsIconSize"

"UCSOrtho"

"UCSView"

"Use TODAY as Startup dialog"

"UseContextMenus"

"UseMenuHeader"

"UserName"

"WhipArcEnable"

"WHIPTHREAD"

"WhipThreadEnable"

"XFadeCtl"

"XhairPickboxEtc"

"XrefControlFlags"

"XrefLazyLoadMode"

"XrefLoadPath"

"ZoomFactor"

"UseMRUConfig"

"PLOTLEGACY"

"PSTYLEPOLICY"

"OLEQUALITY"

"Anyport"

"Validation Policy"

"Validation Strategy"

 

Je me demandais si une fonction récursive ne serait pas capable de faire une recherche de toutes les variables d'environnement valides dans Autocad (sachant que l'on peut créer ses propres variables et que celle ci sont sensible à la case)

 

Je m'y suis essayé, mais pour l'instant, choux blanc! Je ne suis pas très doué pour appréhender ces fonctions récursives correctement....

Mon idée de départ était d'incrémenter avec (chr) dans une plage de 32 à 128 sur environ 32 ou 64 caractères et de vérifier par (getenv) leur validité afin de générer une liste pour la version (avec ses Add-On) sur laquelle on tourne.

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Lien vers le commentaire
Partager sur d’autres sites

Salut BonusCAD

 

Mon idée de départ était d'incrémenter avec (chr) dans une plage de 32 à 128 sur environ 32 ou 64 caractères et de vérifier par (getenv) leur validité afin de générer une liste pour la version (avec ses Add-On) sur laquelle on tourne

 

Pour avoir déjà tenter quelque chose de similaire avec la fonction getvar ,avant de m’apercevoir qu’il était possible de récupérer la liste des variables AutoCAD via la

commande MODIFVAR

Commande:

MODIFVAR Entrez le nom de la variable ou [?]: ?

Entrez les variables à répertorier <*>:

 

Je peux dire que je me suis confronté très vite à la notion d’explosion combinatoire (que j’ai apprise à l’occasion) en atteingnant péniblement la combinaison du 5ème caractères après plus d’une demi-journée. En fait, on peut apparenter cela au type de code qualifié de brut de force utilisé pour craker des mots de passe.

 

Pour générer ma liste je m’étais basé sur cette fonction, car selon moi une récursive ne s’impose pas..

;; ---------------------------------------------------------------
;; ar-1:n => Arrangement à Répétition de 1 à n (Version itérative)
;; ---------------------------------------------------------------
;; Argument: Une liste de symboles (d'éléments)                   
;; Retourne: Tous les arrangements de 1 à n                       
;; Exemple :                                                      
;;   (ar-1:n '(A B C) 2)                                          
;;    => ((A) (B) (C) (A A) (A B) (A C) (B A) (B B) (B C) (C A) (C B) (C C)) 

(defun ar-1:n (l n / lst res)
 (setq lst '(nil))
 (repeat n
   (setq res (append res
                     (setq lst (apply 'append (mapcar '(lambda (x) (mapcar '(lambda (y) (cons x y)) lst)) l)))
             )
   )
 )
)

 

Donc je ne pense pas que la solution soit là, à moins que je ne me trompe et n’ai rien compris à ton idée…

A+

Apprendre => Prendre => Rendre

Lien vers le commentaire
Partager sur d’autres sites

Je ne pense vraiment pas que cette donnée soit conservée dans une variable système ni d'environnement puisqu'elle est conservée dans l'objet Layout (PlotSettings plus exactement) de chaque présentation.

 

On y accède avec AutoLISP par la liste DXF de l'entrée du dictionnaire ACAD_LAYOUT correspondant à la présentation, il s'agit du bit 2 dans le groupe 70 suivant le marqueur de sous-classe AcDbPlotSettings.

 

Bonuscad,

Pour les variables d'environnement, je pense qu'il serait plus rapide et plus simple de tester (getenv ...) avec les clés de la base de registre dans (vlax-product-key). Une fonction récursive s'imposera aussi pour parcourir l'arborescence.

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

Lien vers le commentaire
Partager sur d’autres sites

Pour avoir déjà tenter quelque chose de similaire avec la fonction getvar ,avant de m’apercevoir qu’il était possible de récupérer la liste des variables AutoCAD

 

Pour les variables c'est sur que tu peut récupérer la liste comme du l'énonce (avec le joker *).Encore que certaine variable cachée ne te seront pas retournées.

 

Pour les variables d'environnement, rien n'existe de similaire.

 

En fait, on peut apparenter cela au type de code qualifié de brut de force utilisé pour craker des mots de passe.

Bien que le but ne soit pas cela, c'est vrai que c'est similaire.

Mais bon vu mon niveau, pour moi je serais juste capable de faire CA

 

plus simple de tester (getenv ...) avec les clés de la base de registre dans (vlax-product-key)

 

Si effectivement elles sont toutes à cet endroit, la solution deviendrait plus simple. J'essayerais d'explorer cette voie (à temps perdu...)

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Lien vers le commentaire
Partager sur d’autres sites

Re,

 

Pour le plaisir le code que j’avais écrit (adapté avec getenv) testé en limitant la recherche à un arrangement de 1 à 3 caractères en se limitant aux caractères alphabétiques, tu verras cela mouline déjà un peu..

(apply 'append
       (mapcar '(lambda (v)
                  (if (getenv v)
                    (list v)
                  )
                )
               (mapcar '(lambda (x) (apply 'strcat x))
                       (ar-1:n '("A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S" "T" "U"
                                 "V" "W" "X" "Y" "Z")
                               3
                       )
               )
       )
)

Pour info cela me retourne les 2 variables suivantes ("OS" "TMP")

 

 

Mais bon vu mon niveau, pour moi je serais juste capable de faire CA

Pas mieux… ;) La preuve plus haut..

 

avec les clés de la base de registre dans (vlax-product-key). Une fonction récursive s'imposera aussi pour parcourir l'arborescence.

Merci (gile), pour le tuyau je ne connaissais pas.. faut dire que question d'environnement en dehors d’AutoCAD je suis très limité mais grace à vos contributions à tous, petit à petit je m’améliore..

 

A+

Apprendre => Prendre => Rendre

Lien vers le commentaire
Partager sur d’autres sites

Je viens de regarder un peu et je m'aperçois qu'AutoLISP est très pauvre pour utiliser la base de registre : il n'existe pas de fonction permettant de retrouver toutes les valeurs/variables d'une clé.

Je vais essayer en .NET, je posterais mes résultats.

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

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é