zilong136 发表于 2024-3-25 12:02:55

工具选项板如何加载飞诗?

本帖最后由 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 15:46:58

本帖最后由 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)





zilong136 发表于 2024-3-26 09:20:00

烟花丝雨 发表于 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
命令:

烟花丝雨 发表于 2024-3-26 08:33:54

·文件路径要用 \\
(setq file "e:\\Lisp2016.6.1-1\\ ")

664571221 发表于 2024-3-26 10:23:59

zilong136 发表于 2024-3-26 09:20
试过都没用,说注册表有问题:
命令: (LOAD "E:/飞诗Lisp编辑器2016.6.1-1/FS.lsp") C:FS
命令: fs 无 ...

用易楼加载

zilong136 发表于 2024-3-26 16:23:28

jh1005 发表于 2024-3-26 15:46
要在CAD首次启动时加载link40.dll或link35.dll才行

你代码是不是有问题?

zilong136 发表于 2024-3-26 16:27:21

664571221 发表于 2024-3-26 10:23
用易楼加载

不行的,试过有问题才出来求助的

cjrun 发表于 2024-3-26 20:22:41

加好搜索目录
(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"))
                )
        )       
)
试试看

664571221 发表于 2024-3-26 21:44:03

zilong136 发表于 2024-3-26 16:27
不行的,试过有问题才出来求助的

易楼不能加载吗

zilong136 发表于 2024-3-26 23:31:23

664571221 发表于 2024-3-26 21:44
易楼不能加载吗

我没有成功,不知道还有哪里要注意的。
页: [1] 2
查看完整版本: 工具选项板如何加载飞诗?