找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 656|回复: 6

[研讨] 在不同的文档间传递变量的方法

[复制链接]

已领礼包: 19个

财富等级: 恭喜发财

发表于 2018-11-18 16:16:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
几种不同的方法,在不同的文档间传递变量

1. 使用 Blackboard Namespace

定义函数或为全局变量赋值时,这些函数在文档命名空间中定义,因此只能从活动文档中访问。 但是,您可以将变量存储在称为“Blackboard Namespace”的共享命名空间中,该命名空间可从所有文档中访问。

例如:

要在Blackboard Namespace中存储数据,请使用vl-bb-set函数,例如:

_$ (vl-bb-set 'myvar 123)

123

要从Blackboard Namespace检索存储的数据,请使用vl-bb-ref函数,例如:

_$ (vl-bb-ref 'myvar)
123

2. 使用 vl-propagate 函数

vl-propagate函数将给定变量的值从活动文档命名空间复制到所有其他文档命名空间(包括在评估函数后随后打开的那些)。 但是,与使用共享命名空间不同,由于变量被复制到其他命名空间,如果在一个命名空间中更改变量的值,则变量的值将不会在已复制变量的命名空间中更改。


例如:

Drawing1.dwg

Command: (setq myvar 123)
123
Command: (vl-propagate 'myvar)
123

Drawing2.dwg

Command: !myvar
123

在Drawing1.dwg中更改变量时:

Command: (setq myvar 456)
456

在Drawing2.dwg中没有更改该值(直到再次调用vl-propagate):

Command: !myvar
123

3. 其他方法

在文档之间传输数据的其他方法包括:
将数据写入一个文档中的文件并从另一个文档中读取文件数据
将数据写入一个文档中的注册表,并从另一个文档中读取注册表数据

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 10个

财富等级: 恭喜发财

发表于 2018-11-18 16:39:13 | 显示全部楼层
本帖最后由 lisp_beginner 于 2018-11-18 16:40 编辑

受教,请问,一个函数,如果定义一次,能让所有的DWG都能有定义吗?

点评

使用 vl-propagate 不过函数定义要通过DEFUN-Q  详情 回复 发表于 2018-11-18 22:09
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2018-11-18 18:06:50 | 显示全部楼层
一直使用vl-propagate,还不懂原来可以用 Blackboard Namespace,受教了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2018-11-18 22:09:13 | 显示全部楼层
lisp_beginner 发表于 2018-11-18 16:39
受教,请问,一个函数,如果定义一次,能让所有的DWG都能有定义吗?

使用 vl-propagate


不过函数定义要通过DEFUN-Q
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2126个

财富等级: 金玉满堂

发表于 2018-11-19 06:29:22 | 显示全部楼层
谢谢分享,技术太深了,我不懂。。呵
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6468个

财富等级: 富甲天下

发表于 2018-11-19 09:37:58 | 显示全部楼层
这个技术太高端了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2018-11-20 08:08:20 | 显示全部楼层
另外补充:除了defun-q,传递LISP文件至所有空间也可以使用 ( vl-load-all )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-4-20 10:26 , Processed in 0.436312 second(s), 44 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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