加载绘图后反应堆数据中的未绑定符号

Unbound symbols in reactor data after loading the drawing

我在 table 中添加了一个修饰反应器。反应器在其数据中具有标注功能。 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 包含正确的名称,但值为零。

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

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