- 将acad.pgp,lsp,fas,vlx,名称增加一份gcad.pgp,lsp,fas,vlx.涉及系统加载用.
- Lisp的拖拉加载在gcad无法通过lastprompt获取命令历史栏最后一行(含路径字符串),请改用_.copyhist命令实现拖拉加载...以下代码贴出两种拖拉方式.
;;;name: ???BF-Catalog;;;desc: ???设置基础目录;;;arg: ????#xdlj:字符串;;;return: ?成功:工具箱基础目录, 失败:输出警告提示;;;example: (BF-Catalog "04.工作小工具\\Notepad2.exe");;;example: (BF-Catalog "") ?????-> "D:\\K01.惊惊盒子\\"(if (not BF-Catalog) ???(progn ???????;拖拉添加信任目录 ???????(vl-catch-all-apply ;捕获错误 ????????‘(lambda ?(/ str nn str1 html) ???????????(while (= (logand (getvar "CmdActive") 1) 1)(command));结束已有命令 ???????????(princ ?"\n") ???????????;字符串处理,得到完整路径: ???????????;ACAD最后一句内容:"命令: (LOAD \"D:/桌面/新建文本文档.lsp\")" ???????????;GCAD无法获取最后一句内容 ???????????(if (getvar "GCADVER");是浩辰 ???????????????(progn ;是执行 ???????????????????(command "_.copyhist") ????????????????????(setq html (vlax-create-object "htmlfile")) ????????????????????(setq str (vlax-invoke-method (vlax-get (vlax-get html ‘parentwindow) ‘clipboarddata) ‘getdata "text") ??????????????????????????str (strcase (if (= (type str) ‘variant) (vlax-variant-value str) str)) ????????????????????) ???????????????????(setq str (vl-string-right-trim " " str)) ???????????????????(while (vl-string-search "\r\n" str) ??????????????????????????(setq str (vl-string-subst "" "\r\n" str)) ???????????????????) ???????????????????(while (setq nn (vl-string-search "(LOAD \"" str)) ??????????????????????????(setq str (substr str (+ nn 8))) ???????????????????) ???????????????????(and (setq nn (vl-string-search "\")" str)) ????????????????????????(setq str (substr str 1 (1+ nn))) ;file name ???????????????????) ???????????????????(setq str (vl-filename-directory (vl-string-translate "/" "\\" str))) ???????????????????(and html (vlax-release-object html)) ???????????????) ???????????????(progn ;acad也可以用_.copyhist的方法的,这里只是展示lastprompt的用法,但是浩辰无法用lastprompt ??????????????????(setq ????????????????????str1 (getvar "lastprompt") ??????????;获得最后一行命令 ????????????????????nn (vl-string-search "(LOAD \"" str1);在字符串中搜索指定子串 ??????????????????) ??????????????????(if nn ????????????????????(progn ??????????????????????(setq ????????????????????????str (substr str1 (+ nn 8)) ?????????;去掉前面的 ????????????????????????nn (vl-string-search "\")" str) ????;在字符串中搜索指定子串 ????????????????????????str (substr str 1 (1+ nn)) ?????????;去掉文件名称 ????????????????????????str (vl-filename-directory (vl-string-translate "/" "\\" str));转化 ??????????????????????) ????????????????????) ??????????????????) ???????????????) ???????????) ???????????(if str ??????????????(progn ????????????????;添加信任目录 ????????????????(@add-Catalog str (list "" "02.小插件" "06.填充" "Fonts")) ????????????????;定义惊惊盒子基础目录 ????????????????(eval (list ‘defun ‘BF-Catalog ‘(#xdlj)(list ‘strcat (strcat str "\\")‘#xdlj))) ??????????????) ???????????) ?????????) ???????) ???))
- 拖拉加载时候更改加载的dll方式,增加gcad部分,利用它特有的变量.acad会忽视这个变量的.
?(if (getvar "GCADVER");浩辰 ?????(progn ??????????(setq ???????????tmp_ver (substr (getvar "ACADVER") 1 4) ???????????tmp_str (cond ?????????????????????((= tmp_ver "19.0") "JJBoxGstarCad_2019.dll") ?????????????????????(T nil) ???????????????????) ?????????) ?????) ?????(progn ;acad加载 ?????????(setq ???????????tmp_ver (substr (getvar "ACADVER") 1 4) ???????????tmp_str (cond ?????????????????????((= tmp_ver "16.2") "JJBoxDeskCad_2006.dll") ?????????????????????((= tmp_ver "17.0") "JJBoxDeskCad_2007.dll") ?????????????????????((= tmp_ver "17.1") "JJBoxDeskCad_2008.dll") ?????????????????????((= tmp_ver "17.2") "JJBoxDeskCad_2009.dll") ?????????????????????((= tmp_ver "18.0") "JJBoxDeskCad_2010.dll") ?????????????????????((= tmp_ver "18.1") "JJBoxDeskCad_2011.dll") ?????????????????????((= tmp_ver "18.2") "JJBoxDeskCad_2012.dll") ?????????????????????((= tmp_ver "19.0") "JJBoxDeskCad_2013.dll") ?????????????????????((= tmp_ver "19.1") "JJBoxDeskCad_2014.dll") ?????????????????????((= tmp_ver "20.0") "JJBoxDeskCad_2015.dll") ?????????????????????((= tmp_ver "20.1") "JJBoxDeskCad_2016.dll") ?????????????????????((= tmp_ver "21.0") "JJBoxDeskCad_2017.dll") ?????????????????????((= tmp_ver "22.0") "JJBoxDeskCad_2018.dll") ?????????????????????((= tmp_ver "23.0") "JJBoxDeskCad_2019.dll") ?????????????????????(T nil) ???????????????????) ?????????) ?????) ?)
- gcad注册表和acad注册表有点区别,少了语言版本及区域版本,而arx和dll重复加载的注册表位置和acad不同的地方是 HKEY_CURRENT_USER\SOFTWARE\Gstarsoft\GstarCAD\R17.0\zh-CN\
要增加Applications项(不是Application),之后设置和acad的Applications一样.(这里浩辰居然没有空置一个,要自己去添加 - . - ) - gcad一个注册表问题浩辰注册表在net4.0及以上工程获取注册表会出现以下问题,而用这在net3.5是没有的..
要将代码改成以下获取:
var copys = Registry.CurrentUser.OpenSubKey(@"Software\\Gstarsoft\\GstarCAD\\R19\\zh-CN\\"); ??????????var b = copys.GetValueNames();foreach (var item in b){ ????string sz = copys.GetValue(item).ToString(); ????sz = sz.Remove(sz.IndexOf(‘\0‘)); ????Console.WriteLine(sz);}
cad.net之ACAD移植到GCAD的自动加载问题
原文地址:https://www.cnblogs.com/JJBox/p/10209549.html