CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoCAD 2024 开发者帮助

遵循 AcEdInputPointFilter 礼仪

2024-5-18 19:13| 发布者: admin| 查看: 19| 评论: 0|原作者: admin|来自: AutoCAD

遵循 AcEdInputPointFilter 礼仪

水平

建议

适用于

ObjectARX 和 .NET 应用程序

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

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

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

      filter 类还应该定义一个 APP 字符串,其中包含应用名称中可行的“产品信息”部分,方法是定义类静态成员 void 以通过参数传递字符串。rxInit()appNamenewAcRxClass()

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

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

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

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

父主题:

  1. ObjectARX 编程实践

路过

雷人

握手

鲜花

鸡蛋

最新评论

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

GMT+8, 2024-6-27 15:53

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部