第十章 使用名称空间 (二) 名称空间函数(1)
名称空间函数当你打算编译你的LSP代码为独立名称空间的VLX模块时,你需要用到一些特殊函数,以便使你的代码能和其它VLX模块交流,使得能在你的新VLX模块的名称空间以外运行。无论是否有其它VLX模块在这个文件名称空间里还是被编译到它们自己的名称空间,都得这样做。然而,需要注意的是,对于每一个被编译到它们自己独立名称空间的VLX来说,你必须在每个文件中都依靠这些函数,而不只是一部分文件中。至少你需要它们互相通讯或和文档会话名称空间通讯。
(vl-list-loaded-vlx)
返回所有已加载的独立名称空间VLX应用程序的表。如果未加载则返回nil。
(vl-unload-vlx appname)
通过名称(appname是一个字符串)卸载独立名称空间VLX应用程序。这个工作很象ObjectARX应用程序的(arxunload)函数所做的一样。
参数:
AppName 符号或字符串,指被卸载的VLX应用程序的字符名称,例如“myapp.vlx”。
(vl-vlx-loaded-p appname)
如果在当前图形会话中被指定的独立名称空间VLX应用程序已加载,则返回T,否则返回nil。
(vl-doc-export ‘function)
从独立名称空间VLX应用程序中显露函数给名称空间以外的应用程序或函数使用。这必须在给定的LISP文件的顶层声明,它要在任何函数定义之上,要在编译进独立名称空间VLX应用程序之前声明。如果函数没在从给定的VLX中被显露,那它对于那个VLX就是私有的,并且不可以从这个名称空间以外访问它。
(vl-doc-import filename [‘function])
从另一个VLX应用程序中输入一个函数,使其可在当前的独立名称空间VLX应用程序内部使用。如果你不输入这些从其它VLX应用程序中被显露的函数,那它们就不能被作为该函数的用户在当前的VLX应用程序中访问它。如果指定了filename,但省略‘function,则所有在这个VLX模块(filename)中的函数都将被输入。
参数:
Filename 符号或字符串,指VLX文件名。
Function (可选项)代表一个函数名的引用符号。
如果你想限制被输入的函数,你必须使用function参数指定那些函数的名称,一次一个。filename参数不能带文件扩展名,只能是外部VLX应用程序文件的基本文件名,而且那些文件必须存在于默认的搜索路径中,或者也可以指定全路径和文件名。
(vl-arx-import [‘function | “appname” ])
从指定加载的ARX文件中输入一个或一组函数。如果省略function和appname,那些在当前文档名称空间中的所有ARX定义函数都将被输入。这个function将会使用于(defun)函数定义中。ARX应用程序必须被加载到当前的文件会话中以使该函数能工作。
参数:
Function (可选项)代表函数名称的引用符号。
Appname (可选项,但当Function使用时必须要使用)符号或字符串,代表从哪里输入ARX文件。
例如,如果你想在独立名称空间VLX应用程序中使用DOSlib ARX函数(dos_getstring),你必须象如下这样输入它:
(vl-arx-import ‘dos_getstring “doslib2k.arx”)
如果你想从doslib2k.arx中输入所有函数。你只需象如下这样简单地去掉函数名就可以了:
(vl-arx-import “doslib2k.arx”)
(vl-doc-set ‘symbol value)
从独立名称空间VLX应用程序中设置文档名称空间中的符号。如果在独立名称空间VLX应用程序以外使用,其行为有如(set)函数。该函数可用于将定义于独立名称空间VLX应用程序中符号复制到文档名称空间去供公开访问。该符号是复制值,而非引用,也就是说,在VLX应用程序中的符号不能由文档名称空间作修改。要输入一个文档名称空间的符号,你必须在你的独立名称空间VLX应用程序中用(vl-doc-ref)函数。
参数:
Symbol 引用符号的名称。
Value 任何指定给该符号的值。
示例:
所定义的示例函数,需要编译进独立名称空间VLX并加载进AutoCAD:
(defun DOCSET ()
(vl-doc-set ‘G$NAME1 “Joe”)
)
从文档名称空间,通过命令提示符:
命令: (DOCSET)
命令: !G$NAME1
“Joe”
(vl-doc-ref ‘symbol)
从文档名称空间输入符号到独立名称空间VLX应用程序的名称空间。该符号是复制值,而非引用,也就是说,文档名称空间符号不能直接从VLX名称空间中修改。从VLX名称空间中输出或设置文档名称空间,必须使用(vl-doc-set)函数。
参数:
Symbol 引用符号的名称。
http://bbs.mjtd.com/xwb/images/bgimg/icon_logo.png 该贴已经同步到 明经通道的微博 继续深造! 越来越高深 laixuexijankan 先过一遍内容比较抽象有点吃力
页:
[1]