明经通道 Visual LISP 函数  
vlax-ldata-get
 

在图形词典或对象中检索 LISP 数据

(vlax-ldata-get dict key [default-data] [private])

参数

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 中使用私有数据的步骤
  1. 在 Visual LISP 窗口输入下列命令:
  2. _$ (vlax-ldata-put "mydict" "mykey" "Mumbo Dumbo")
    "Mumbo Dumbo"
    _$ (vlax-ldata-get "mydict" "mykey")
    "Mumbo Dumbo"
  3. 在文件中输入下列代码,然后使用“生成应用程序”将文件生成为 VLX。使用“生成应用程序”向导的“专家”模式,并在“应用程序选项”中选择“独立名称空间”。
  4. (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)
    )
  5. 加载 VLX 文件。
  6. 运行 ldataput 以保存私有数据:
  7. _$ (ldataput)
    This is a test of putting private ldata

    参考上面定义 ldataput 的代码。该函数存储了一个包含 "Mine! Mine!" 的字符串。

  8. 运行 ldataget 以检索 LISP 数据:
  9. _$ (ldataget)
    "Mumbo Dumbo"

    请注意 ldataget 返回的数据并非 ldataput 存储的数据。这是因为 ldataget 在调用 vlax-ldata-get 时没有指定 private 参数。所以,ldataget 检索的数据是第 1 步中从 Visal LISP 控制台中调用 vlax-ldata-put 设置的数据。

    _$ (ldataget-nilt)
    "Mine! Mine! "
  10. 运行 ldataget-nilt 以检索 LISP 数据:
  11. _$ (ldataget-nilt)
    "Mine! Mine! "

    这次返回由 ldataput 保存的私有数据,因为 ldataget-nilt 在调用 vlax-ldata-get.时指定了 private 参数。

  12. 在 Visual LISP 控制台提示行中进行与 ldataget-nilt 相同的调用,以检索私有数据:
  13. _$ (vlax-ldata-get "mydict" "mykey" nil T)
    "Mumbo Dumbo"

    在从独立名称空间 VLX 中调用 vlax-ldata-get 时,忽略了 private 参数。对于指定的 dict 和 key,如果存在非私有数据(如本例所示),则检索非私有数据。

明经通道 版权所有 未经许可 不得传播

 评论