cadman6735 发表于 2022-7-6 10:30:28

向位置lis添加快捷方式

我将在两个地方发布这个问题,一个在CAD管理下,另一个在Lisp论坛下,因为只有两个人在观看CAD管理和46 watchin Lisp论坛。提前为双重职位道歉。
 
我想在位置列表中添加一个shorcut。(当文件搜索对话框在打开、保存或导入等过程中打开时,左侧的列表…)在部署或lisp例程中实现自动化。
 
这是否可以访问位置列表以自动创建到所需路径位置的快捷方式?
 
谢谢

JohnM 发表于 2022-7-6 11:06:10

让你知道它在哪里
在注册表中,点击此处:
HKEY\U CURRENT\U USER/Software/autodsek/Acad//Acad xxx xxx/Profiles
选择一个配置文件,然后转到对话框,然后转到AllAnavDialogs
这是位置列表信息的存储位置。
 
我发现的问题是,如果密钥集为空,则不会显示下一个添加的密钥集
此外,当我从对话框中删除路径时,它在注册表中没有被删除
 
下面的代码需要错误捕捉,并根据您的需要进行调整
这是在AutoCAD 2004的windows XP Pro上完成的
我不确定更新的操作系统注册表是如何布置的
我对您的注册表中的错误或问题不承担任何责任
使用此软件的风险自负!!!!!!!!!
 
 

;;;call pllst using 2 arguments aug1 is the path to the location you want
;;; aug2 is the diaplay name that wiil show in the dialog box
;example: (pllst "C:\Program Files" "Program Files")
;;;NOTE: THIS NEEDS ALOT OF ERROR TRAPPING AND IT WILL WRITE TO THE REGISTRY
;;; THERE ARE STILL THINGS THAT CAN GO WRONG AND ANYTIME YOU PLAY IN THE REGISRTY
;;; YOU SHOULD BE VERY CAREFULL
;;; USE THIS AT YOU OWN RISK!!!!!!!!!!!!!!!!!

(defun pllst (aug1 aug2 / prlst regkey nxtnum key1 key2 key3 ret1 ret2 ret3)
(setq prlst (getprolst));_call to get profile list
(setq regkey
(strcat "HKEY_CURRENT_USER\\"
       (vlax-product-key)
       "\\Profiles\\"
       (nth 0 prlst);_THIS NEES TO BE CHANGED TO SUIT YOUR NEEDS AS WRITTEN IT WILL ONLY GET THE 1ST PROFILE
       "\\Dialogs\\AllAnavDialogs"
       )
       );_setq gets the path to the reg key
;;;_ this will get the next number to be added to the places list
       (setq nxtnum
(1+
       (atoi
(vl-string-left-trim "PlacesOrder"
(nth 2
(vl-registry-descendents
regkey
       "*"
);_reg des list all keys
      );_nth
       );_str trim
);_atoi
    );_1+
       );_setq
(setq key1 (strcat "PlacesOrder" (itoa nxtnum)));_first key name
(setq key2 (strcat "PlacesOrder" (itoa nxtnum)"Display"));_second key nake
(setq key3 (strcat "PlacesOrder" (itoa nxtnum)"Ext"));_third key name
(setq ret1(vl-registry-write regkey key1 aug1));_write key with path
(setq ret2(vl-registry-write regkey key2 aug2));_write key with display name
(setq ret3(vl-registry-write regkey key3 ));_write exit key wit no value
);_defun
;;; GET A LIST OF PROFILES
(defun getprolst(/ prolst)
(vla-getallprofilenames
    (vla-get-profiles
       (vla-get-preferences         
    (vlax-get-acad-object)
       )
       )
    'prolst
)
(vlax-safearray->list prolst)
);_defun

cadman6735 发表于 2022-7-6 11:26:48

约翰
 
谢谢你的时间和努力。我必须说,我认为这件事太离谱了,对于像我这样的人来说,有点危险(可怕)。我会拿着它去研究,但现在我会去每台机器,用手设置捷径。我没想到会更改注册表。
 
这是我想在未来的项目中使用的辩护。
 
再次感谢

JohnM 发表于 2022-7-6 11:48:05

欢迎光临,
当你写注册表时,你真的必须掌握那里发生了什么,并试图找出所有可能出错的方式,然后写一个非常紧凑的代码来解决所有问题,如果你想成为一个好的程序员,你应该在所有的代码中都采用这种方法。
祝你好运
页: [1]
查看完整版本: 向位置lis添加快捷方式