首页 > 解决方案 > 加载绘图后反应器数据中的未绑定符号

问题描述

我在我的桌子上添加了一个修改反应器。反应器的数据中有一个标注功能。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

解决方案


AutoLISP 函数将仅在文档命名空间范围内定义,因此需要在重新打开文档(绘图文件)时重新定义。但是,我不确定为什么在保存操作之后会未定义此类函数。

我个人建议您避免使用持久反应器,而是在绘图启动时重建瞬态反应器。以我的经验,持久反应器永远不会真正持久。


推荐阅读