工具选项板如何加载飞诗?
本帖最后由 zilong136 于 2024-3-26 09:41 编辑不想每次手动NETLOAD加载,想在工具选项板中搞个快捷方式,
如果想自动加载飞诗也行。
尝试以下代码,没有成功,希望高手指正。
[*](defun c:fs (/ str acad file)
[*](setq str (getvar "acadver"))
[*](setq acad (atof (substr str 1 (- (strlen str) 12))))
[*](setq file "e:\\飞诗Lisp编辑器2016.6.1-1\\ ")
[*](if
[*] (> 18.0 acad)
[*] (progn
[*] (command "netload" (strcat file "link35.dll"))
[*] (startapp (strcat file "lispedit.exe"))
[*] )
[*] (progn
[*] (if (/= (getvar "secureload") 0)
[*] (setvar "secureload" 0)
[*] )
[*] (command-s "netload" (strcat file "link40.dll"))
[*] (startapp (strcat file "lispedit.exe"))
[*] (setvar "secureload" 1)
[*] )
[*])
[*])
本帖最后由 jh1005 于 2024-3-26 17:49 编辑
;;要在CAD首次启动(也就是第一个文档)加载link40.dll或link35.dll才行。
;;把飞诗目录加入CAD搜索目录。
;;把该代码保存为lsp文件,把该文件加入启动组。
(defun c:fs () ;打开飞诗LispEdit编辑器
(if (and (findfile "LispEdit.exe") (not (vl-position "lispedit" (mapcar 'vl-filename-base (fy_Progress)))))
(startapp (findfile "LispEdit.exe"))
(alert "没有找到飞诗LispEdit调试的LispEdit.exe文件,请加到CAD搜索目录。")
)
(princ)
)
(defun fy_Progress (/ apps item lst meth1 meth2 WMI) ;读取系统进程
;;Writed By Patrick_35 @ TheSwamp.org
(setq WMI (vlax-create-object "WbemScripting.SWbemLocator")
meth1 (vlax-invoke WMI 'ConnectServer nil nil nil nil nil nil nil nil)
meth2 (vlax-invoke meth1 'ExecQuery "Select * from Win32_Process"))
(vlax-for item meth2
(setq lst (append lst (list (vlax-get item 'CommandLine))))
)
(vlax-release-object WMI)
(vlax-release-object meth1)
(vlax-release-object meth2)
(setq lst (vl-remove nil lst))
(setq lst (mapcar '(lambda(x) (vl-string-translate"/""\\"(strcase x t))) lst))
lst
)
(defun load_FSdll () ;;加载dll
(if (and (findfile "Link35.dll") (findfile "Link40.dll"))
(cond
((>= (atof (getvar "ACADVER")) 20)
(setvar "cmdecho" 0)
(vl-cmdf "._netload" (findfile "Link40.dll"))
)
(t
(setvar "cmdecho" 0)
(vl-cmdf "._netload" (findfile "Link35.dll"))
)
)
(princ "\n没有找到飞诗LispEdit调试的Link35.dll或Link40.dll,请加到CAD搜索目录。")
)
(princ)
)
(load_FSdll)
(princ "\n启动飞诗LispEdit编辑器,命令:fs")
(princ)
烟花丝雨 发表于 2024-3-26 08:33
·
试过都没用,说注册表有问题:
命令: (LOAD "E:/飞诗Lisp编辑器2016.6.1-1/FS.lsp") C:FS
命令: fs 无法加载程序集。错误详细信息: System.ArgumentException: URL 上的无效目录。
在 System.Security.Util.DirectoryString.CreateSeparatedString(String directory)
在 System.Security.Util.URLString.ParseFileURL(String url)
在 System.Security.Util.URLString.GetFileName()
在 System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
在 System.Reflection.RuntimeAssembly.InternalLoadFrom(String assemblyFile, Evidence securityEvidence, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm, Boolean forIntrospection, Boolean suppressSecurityChecks, StackCrawlMark& stackMark)
在 System.Reflection.Assembly.LoadFrom(String assemblyFile)
在 Autodesk.AutoCAD.Runtime.ExtensionLoader.Load(String fileName)
在 loadmgd()1
命令: ·文件路径要用 \\
(setq file "e:\\Lisp2016.6.1-1\\ ") zilong136 发表于 2024-3-26 09:20
试过都没用,说注册表有问题:
命令: (LOAD "E:/飞诗Lisp编辑器2016.6.1-1/FS.lsp") C:FS
命令: fs 无 ...
用易楼加载 jh1005 发表于 2024-3-26 15:46
要在CAD首次启动时加载link40.dll或link35.dll才行
你代码是不是有问题? 664571221 发表于 2024-3-26 10:23
用易楼加载
不行的,试过有问题才出来求助的 加好搜索目录
(defun c:fss (/ file)
(setq file "H:/cjr_box/飞诗Lisp编辑器2016.6.1/")
(if (<= (atoi (substr (getvar "ACADVER") 1 2)) 18)
(progn
(command "NETLOAD" (strcat file "link35.dll"))
(startapp (strcat file "lispedit.exe"))
)
(progn
(command-s "NETLOAD" (strcat file "link40.dll"))
(startapp (strcat file "lispedit.exe"))
)
)
)
试试看
zilong136 发表于 2024-3-26 16:27
不行的,试过有问题才出来求助的
易楼不能加载吗 664571221 发表于 2024-3-26 21:44
易楼不能加载吗
我没有成功,不知道还有哪里要注意的。
页:
[1]
2