autolisp - 加载绘图后反应器数据中的未绑定符号
问题描述
我在我的桌子上添加了一个修改反应器。反应器的数据中有一个标注功能。callout
是一个函数am:trench-updated
(vlr-pers
(vlr-object-reactor
(list table)
(list (cons :am:dictionary dictionary)
(cons :am:modified callout))
(list (cons :vlr-modified 'am:table-modified))))
在反应器中,我从列表中提取这些标注:
(defun am:object-get (object field)
(cdr (assoc field object)))
(defun am:table-modified (reactor-object)
(setq reactor-data (vlr-data reactor-object)
callout (am:object-get reactor-data :am:modified))
(apply callout (list ...)))
在我保存加载绘图之前它工作正常。加载后,callout
包含正确的名称,但值为 nil。
解决方案
AutoLISP 函数将仅在文档命名空间范围内定义,因此需要在重新打开文档(绘图文件)时重新定义。但是,我不确定为什么在保存操作之后会未定义此类函数。
我个人建议您避免使用持久反应器,而是在绘图启动时重建瞬态反应器。以我的经验,持久反应器永远不会真正持久。
推荐阅读
- r - In R, converted factor variables to numeric don't show as such and recoding Likert scale doesn't work. Why is this?
- javascript - 为什么 GSAP 输入不透明动画无法正常工作?
- c++ - C++ Visual Studio Community 2019 SFML 链接快捷方式
- raku - 乐和杯子GetDests
- c# - 使用文本或图像保存原始剪贴板,稍后在 C# 中恢复
- pandas - KeyError:“[Index(['Company'], dtype='object')] 均不在 [columns] 中”
- ruby - 从网页抓取 ASCII 艺术作品的问题
- python - 在 Django(3.1) 中添加指向另一个页面的链接 (NoReverseMatch)
- sql - SQLite - 在With子句之后返回不为空的数据的列名称
- arduino - 如何在传感器的类包装器中注入对象或创建新对象,例如 DHT22?