CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

ObjectARX 开发指南

遵循 AcEdInputPointFilter 礼仪

2022-12-31 07:37| 发布者: admin| 查看: 241| 评论: 0|来自: AutoCAD

水平

建议

适用于

ObjectARX 和 .NET 应用程序

AutoCAD 一次只能识别一个实例。当多个应用程序需要在给定时间使用筛选器时,处理筛选器的顺序非常重要,并且可能导致一个或两个应用程序出错。AcEdInputPointFilter

如果发现应用程序必须在另一个筛选器已处于活动状态时注册另一个筛选器,请遵循以下建议:

  • 将此槽的使用限制为修改点或工具提示字符串的上下文,以便所有应用程序都可以使用其筛选器,而冲突或无关处理最少。删除筛选器,并在尽可能多的执行上下文中将其替换为监视器。Useand确定上下文何时与应用程序相关,并根据需要进行注册或取消注册。在 AutoCAD 静止模式下,使用监视器,直到它检测到应用程序将运行的条件。然后,将应用程序中的已注册命令排队,并在执行后将监视器换成筛选器。AcEditorReactorAcEdInputContextReactor
  • 让筛选器实现遵循以下约定:
    • 使用 AcRx 注册筛选器类,并使用可选的唯一前缀开始类名。

      过滤器类还应该定义一个带有可行“产品信息”部分的APP字符串的应用名称,通过定义类静态成员void来传递字符串的参数。rxInit()appNamenewAcRxClass()

    • 在应用程序名称中提供显式逻辑应用程序名称和产品信息元素。实现并记录用于禁用应用程序的点筛选器的用户界面,即使这意味着暂停全部或部分应用程序操作。这将允许具有非集成滤波器的应用程序安全且彼此独立地运行。
    • 记录用户界面,最好以包含字符串“点筛选器”的形式进行索引。
  • 如果两个应用程序在使用点过滤器时经常或系统地相互冲突,请尝试集成点过滤器的行为以满足两个应用程序。
  • 如果您和其他应用程序开发人员确定您的筛选器(在此示例中)可以和平共存,并且哪个筛选器应优先于另一个筛选器,请按照以下步骤操作:ADSK_Filter1WXYZ_Filter2
    • 获取指向现有筛选器的指针(例如,)。ADSK_Filter1
    • 如果它是一个过滤器,你可以链接,然后撤销它,注册你自己的过滤器,并将你的过滤器()的输出传递到另一个过滤器()。ADSK_Filter1WXYZ_Filter2
    • 或者,将筛选器的输入 () 传递到另一个筛选器 (),并像处理原始输入值一样处理其输出。ADSK_Filter1WXYZ_Filter2

调用筛选器的顺序决定了哪个筛选器优先于另一个筛选器。

解决两个筛选器之间冲突的另一种方法是在操作上下文中遵从一个筛选器。或者,您可以设计自己的协议,以便筛选器类相互通信。如有疑问,请联系Autodesk 开发者网络了解正确的程序。

您只应将不熟悉的输入点过滤器作为最后的手段。每个筛选器在撤销时都会收到一个回调。如果过滤器在意外时间发生这种情况,它可以采取规避操作,例如提醒用户其操作正在更改(可能提供稍后恢复它的机会)甚至退出 AutoCAD。


路过

雷人

握手

鲜花

鸡蛋

最新评论

QQ|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 )

GMT+8, 2024-5-19 14:37

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部