如何创建字典类型的数据列表??
我在明经翻译的VLISP函数手册里看到有dictadd,dictnext等关于字典数据列表的函数,但是我要如何选创建一个dict类型的列表?我猜应该和(setq list1 ‘(a b c))差不多吧,但是没有找到相关的教程和说明,求各位前辈指条明路。
http://bbs.mjtd.com/xwb/images/bgimg/icon_logo.png 该贴已经同步到 羊渔蛋的微博 厉害了,能不能把要创建的东西直接以字典形式,添加到cad中呢 看来大师是高级LISP开发者?对字典操作很熟悉 多谢大师,造福人类 vlax-ldata-put
存储图形词典或对象中的 LISP 数据
(vlax-ldata-put dict key data )
参数
dict
VLA 对象、AutoCAD 图形图元对象或指定全局词典的字符串。
key
字符串,指定词典关键字。
data
要存储到词典中的 LISP 数据。
private
如果从独立名称空间 VLX 调用 vlax-ldata-put,且 private 的值非 nil,则 vlax-ldata-put 仅将同一 VLX 的数据标为可检索的。
返回值
data 的值。
示例
_$ (vlax-ldata-put "dict" "key" '(1))
(1)
_$ (vlax-ldata-put "dict" "cay" "Gumbo jumbo")
"Gumbo jumbo"
本帖最后由 xiaolong1487 于 2015-12-15 18:39 编辑
vlax-ldata-get
在图形词典或对象中检索 LISP 数据
(vlax-ldata-get dict key )
参数
dict
VLA 对象、AutoCAD 图形图元对象或指定全局词典的字符串。
key
字符串,指定词典关键字。
default-data
如果词典中没有匹配的关键字,则返回该 LISP 数据。
private
如果 private 的值非空,且从独立名称空间 VLX 调用 vlax-ldata-get,则 vlax-ldata-get 在 dict 中检索私有 LISP 数据。
如果指定了 private,则必须指定 default-data。可以将后者指定为 nil。
请注意,在独立名称空间 VLX 中,可以使用同样的 dict 和 key 参数同时存储私有和非私有变量。私有数据仅能在同一 VLX 中访问,而非私有数据可以被其他应用程序检索。
返回值
key 的值。
示例
在 Visual LISP 窗口输入下列命令:
_$ (vlax-ldata-put "mydict" "mykey" "Mumbo Dumbo")
"Mumbo Dumbo"
_$ (vlax-ldata-get "mydict" "mykey")
"Mumbo Dumbo"
测试在 VLX 中使用私有数据的步骤
在 Visual LISP 窗口输入下列命令:
_$ (vlax-ldata-put "mydict" "mykey" "Mumbo Dumbo")
"Mumbo Dumbo"
_$ (vlax-ldata-get "mydict" "mykey")
"Mumbo Dumbo"
在文件中输入下列代码,然后使用“生成应用程序”将文件生成为 VLX。使用“生成应用程序”向导的“专家”模式,并在“应用程序选项”中选择“独立名称空间”。
(vl-doc-export 'ldataput)
(vl-doc-export 'ldataget)
(vl-doc-export 'ldataget-nilt)
(defun ldataput ()
(princ "This is a test of putting private ldata ")
(vlax-ldata-put "mydict" "mykey" "Mine! Mine! " T)
)
(defun ldataget ()
(vlax-ldata-get "mydict" "mykey")
)
(defun ldataget-nilt ()
(vlax-ldata-get "mydict" "mykey" nil T)
)
加载 VLX 文件。
运行 ldataput 以保存私有数据:
_$ (ldataput)
This is a test of putting private ldata
参考上面定义 ldataput 的代码。该函数存储了一个包含 "Mine! Mine!" 的字符串。
运行 ldataget 以检索 LISP 数据:
_$ (ldataget)
"Mumbo Dumbo"
请注意 ldataget 返回的数据并非 ldataput 存储的数据。这是因为 ldataget 在调用 vlax-ldata-get 时没有指定 private 参数。所以,ldataget 检索的数据是第 1 步中从 Visal LISP 控制台中调用 vlax-ldata-put 设置的数据。
_$ (ldataget-nilt)
"Mine! Mine! "
运行 ldataget-nilt 以检索 LISP 数据:
_$ (ldataget-nilt)
"Mine! Mine! "
这次返回由 ldataput 保存的私有数据,因为 ldataget-nilt 在调用 vlax-ldata-get.时指定了 private 参数。
在 Visual LISP 控制台提示行中进行与 ldataget-nilt 相同的调用,以检索私有数据:
_$ (vlax-ldata-get "mydict" "mykey" nil T)
"Mumbo Dumbo"
在从独立名称空间 VLX 中调用 vlax-ldata-get 时,忽略了 private 参数。对于指定的 dict 和 key,如果存在非私有数据(如本例所示),则检索非私有数据。
vlax-ldata-list
列出图形词典中的 LISP 数据
(vlax-ldata-list dict )
参数
dict
VLA 对象、AutoCAD 图形图元对象或指定全局词典的字符串。
private
如果从独立名称空间 VLX 调用 vlax-ldata-list,且 private 的值非 nil,则 vlax-ldata-list 仅检索保存在同一 VLX 中的私有数据。(关于本参数的使用,请参见 vlax-ldata-get 。)
返回值
由对 (key . value) 构成的关联表。
示例
使用 vlax-ldata-put 存储词典中的 LISP 数据:
_$ (vlax-ldata-put "dict" "cay" "Mumbo Jumbo ")
"Mumbo Jumbo "
_$ (vlax-ldata-put "dict" "say" "Floobar ")
"Floobar "
使用 vlax-ldata-list 显示存储在“dict”中的 LISP 数据:
_$ (vlax-ldata-list "dict")
(("say" . "Floobar ") ("cay" . "Mumbo Jumbo "))
vlax-ldata-delete
从图形词典中删除 LISP 数据
(vlax-ldata-delete dict key )
参数
dict
VLA 对象、AutoCAD 图形图元对象或指定全局词典的字符串。
key
字符串,指定词典关键字。
private
如果 private 的值非空,且从独立名称空间 VLX 调用 vlax-ldata-delete,则 vlax-ldata-delete 从 dict 中删除私有 LISP 数据。(关于使用该参数的信息,请参见 vlax-ldata-get。)
返回值
如果成功则返回 T,否则返回 nil(如数据不存在)。
示例
向词典中添加 LISP 数据:
_$ (vlax-ldata-put "dict" "key" '(1))
(1)
使用 vlax-ldata-delete 删除 LISP 数据:
_$ (vlax-ldata-delete "dict" "key")
T
如果再次调用 vlax-ldata-delete 删除相同的数据,该函数将返回 nil,因为词典中已不再有该数据。
_$ (vlax-ldata-delete "dict" "key")
nil
不知道是不是你想要的 xiaolong1487 发表于 2015-12-15 18:37 static/image/common/back.gif
vlax-ldata-put
是的,就是这个东西,不过一下子看不太明白,我拿去测试一下这个东西! 赞一个 xiaolong1487 发表于 2015-12-15 18:37 static/image/common/back.gif
vlax-ldata-put
多谢大师,造福人类 多谢大师,造福人类
页:
[1]
2