lucas3 发表于 2014-12-1 15:15:37

Netload and run dll

本帖最后由 lucas3 于 2014-12-1 16:22 编辑

假如我有一个dll (mytest.dll) ,命令是cmdtest
(defun c:test ()
(command "_netload" "C:\\Test\\mytest.dll")
(command "cmdtest")
)

上面的一段代码显示没有技术含量,{:soso_e101:}
想请大师来一段高大上的代码{:soso_e113:},
这个mytest.dll 在CAD支持路径下, 具体位置不知 ,所以代码中最好不要绝对路径,代码能自动找到这个dll

搜了一段代码,放入到ACAD.lisp中自动加载
((lambda (path)
   (if (wcmatch path "*\\DEBUG\\*")
   (foreach f(vl-directory-files path "*.DLL" 1)
       (if
   (wcmatch path
      (strcat "*\\" (strcase (vl-filename-base f)) "\\*")
   )
    (command "_.netLoad" f)
       )
   )
   )
)
(strcase (getvar 'dwgprefix))
)

st788796 发表于 2014-12-1 15:15:38

lucas3 发表于 2014-12-1 16:57
这段代码怎么用呢?

这个应该是 Net 程序调试用的,加载 dwg 文件目录的debug 子目录下的 dll 文件

lucas3 发表于 2014-12-1 15:35:04

(if (wcmatch path
                         (strcat "*\\" (strcase (vl-filename-base f)) "\\*")
                )
                (progn (prompt (strcat "\n DEBUG NETLOADING :\n" path f))
                     (command "_.netLoad" f)
                )
            )

另外如何 获取dll的路径 ,还是假如 mytest.dll ,不知道在哪,运行后能获取路径C:\\Test\\mytest.dll
如果没找不到就弹提示,如果找到了 就把这个路径 给到一个变量dllpath

csharp 发表于 2014-12-1 15:47:28

lucas3 发表于 2014-12-1 15:35
另外如何 获取dll的路径 ,还是假如 mytest.dll ,不知道在哪,运行后能获取路径C:\\Test\\mytest.dll ...

既然在 support 下,直接 netload 即可,非要知道路径用 findfile

lucas3 发表于 2014-12-1 15:54:06

csharp 发表于 2014-12-1 15:47
既然在 support 下,直接 netload 即可,非要知道路径用 findfile

这个我知道啊,但是不会编程,所以....求助啊

csharp 发表于 2014-12-1 16:12:38

lucas3 发表于 2014-12-1 15:54
这个我知道啊,但是不会编程,所以....求助啊

这个不需要编程啊!
(command "netload" "mytest.dll")

mytest.dll 在 support 路径即可

lucas3 发表于 2014-12-1 16:23:44

csharp 发表于 2014-12-1 16:12
这个不需要编程啊!
(command "netload" "mytest.dll")



沙发的问题怎么解决啊

csharp 发表于 2014-12-1 16:27:24

lucas3 发表于 2014-12-1 16:23
沙发的问题怎么解决啊

获取已加载的 dll 路径可以写个 Net 工具来获取,很简单,网上有现成代码,不在 support 下的用lisp获取不好办

lucas3 发表于 2014-12-1 16:31:43

csharp 发表于 2014-12-1 16:27
获取已加载的 dll 路径可以写个 Net 工具来获取,很简单,网上有现成代码,不在 support 下的用lisp获取 ...

不是获取已加载的dll ,而是未加载的, 用findfile 不行吗?要静待大师们解决了

st788796 发表于 2014-12-1 16:34:44

lucas3 发表于 2014-12-1 16:31
不是获取已加载的dll ,而是未加载的, 用findfile 不行吗?要静待大师们解决了

只要在 support 的 findfile 就可以,在 support 下的不需要 findfile

lucas3 发表于 2014-12-1 16:46:28

st788796 发表于 2014-12-1 16:34
只要在 support 的 findfile 就可以,在 support 下的不需要 findfile

怎么听了云里雾里?

lucas3 发表于 2014-12-1 16:57:05

st788796 发表于 2014-12-1 16:34
只要在 support 的 findfile 就可以,在 support 下的不需要 findfile

(if (wcmatch path
                         (strcat "*\\" (strcase (vl-filename-base f)) "\\*")
                )
                (progn (prompt (strcat "\n DEBUG NETLOADING :\n" path f))
                     (command "_.netLoad" f)
                )
            )

这段代码怎么用呢?

lucas3 发表于 2014-12-1 17:29:24

st788796 发表于 2014-12-1 17:04
这个应该是 Net 程序调试用的,加载 dwg 文件目录的debug 子目录下的 dll 文件

谢谢ST大师解答
我需要这样的一个功能,大师帮帮我,
我想运行命令test ,判断mytest.dll有没有加载, 如果已经加载了,就执行命令cmdtest ,如果没有加载,就查找mytest.dll,如果找不到就弹提示并退出,如果找到了,就princ 这个dll文件路径,如:C:\\Test\\mytest.dll,然后加载,并执行命令cmdtest


大师帮帮我! 谢谢!

st788796 发表于 2014-12-1 17:35:31

lucas3 发表于 2014-12-1 17:29
谢谢ST大师解答
我需要这样的一个功能,大师帮帮我,
我想运行命令test ,判断mytest.dll有没有加载,...

这个不好办,怎么知道这个是 dll 定义还是 lsp 定义,不过也可以仿照 autoload 写一个 自动加载 dll 的函数

lucas3 发表于 2014-12-1 17:38:19

st788796 发表于 2014-12-1 17:35
这个不好办,怎么知道这个是 dll 定义还是 lsp 定义,不过也可以仿照 autoload 写一个 自动加载 dll 的函 ...

大师您的意思是判断 mytest.dll有没有加载 这一点不好办是吗?
页: [1] 2 3
查看完整版本: Netload and run dll