在第 6 课中,您使用对象反应器事件注册了两个回调函数。该函数与反应器事件相关联,并且与事件相关联。您需要使这些函数执行它们预期执行的操作。gp:outline-erased:vlr-erasedgp:outline-changed:vlr-modified
使对象反应器回调函数执行它们要执行的操作
- 在gpreact.lsp 中,更改因此它如下所示:gp:outline-erased
(defun gp:outline-erased (outlinePoly reactor parameterList)
(setq *reactorsToRemove*
(cons reactor *reactorsToRemove*))
(princ)
) ;_ end of defun
这里只执行一个操作。连接到折线的反应堆将保存到需要移除的所有反应堆的列表中。(请记住:尽管反应器附加到实体,但它们完全是单独的对象,并且需要像管理常规AutoCAD实体一样仔细管理它们与实体的关系。
- 更改以反映以下代码:gp:outline-changed
(defun gp:outline-changed (outlinePoly reactor parameterList)
(if *lostAssociativity*
(setq *reactorsToRemove*
(cons reactor *reactorsToRemove*))
(setq *polytochange* outlinePoly
*reactorsToChange* (cons reactor *reactorsToChange*))
)
(princ)
)
有两类函数可以修改折线轮廓。第一类包含那些将破坏路径与其磁贴的关联性的命令。您检查了此条件并相应地设置了全局变量。在这种情况下,需要擦除磁贴,然后路径在用户手中。另一个类别是 STRETCH 命令的夹持模式,其中保留关联性,您需要在用户将顶点拖动到新位置后拉直轮廓。gp:command-will-start*lostAssociativity*
该变量存储指向折线本身的 VLA 对象指针。这将在函数中用于重新计算折线边界时。*polyToChange*gp:command-ended
|