明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3620|回复: 4

第十章 使用名称空间 (二) 名称空间函数(1)

[复制链接]
发表于 2012-11-18 20:03 | 显示全部楼层 |阅读模式
名称空间函数
当你打算编译你的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 引用符号的名称。



该贴已经同步到 明经通道的微博
发表于 2012-11-19 08:23 | 显示全部楼层
继续深造!
发表于 2012-11-29 09:05 | 显示全部楼层
越来越高深
发表于 2013-11-20 19:33 | 显示全部楼层
laixuexijankan
发表于 2023-4-10 11:06 | 显示全部楼层
先过一遍  内容比较抽象  有点吃力
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-20 07:42 , Processed in 0.386260 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表