首页 > 其他分享 >AutoCAD .NET 二次开发(2020版)在模态窗口中控制窗口的隐藏和显示

AutoCAD .NET 二次开发(2020版)在模态窗口中控制窗口的隐藏和显示

时间:2023-11-30 15:38:04浏览次数:28  
标签:模态 AutoCAD 对话框 GetSelection 编辑器 Editor 二次开发 窗口

如果你创建了模态窗口,虽然一些API,例如Editor.GetSelection(),可以自动隐藏模式对话框,但如果从模态窗口出发与编辑器(编辑器指的模型空间,即你绘图的窗口)交互,

它会在GetSelection()完成后立即显示对话框,而你的其它代码可能仍在进行中,两者处于异步模式。

由于模式对话框很可能在其它代码完成之前显示,因此 AutoCAD UI 更新会被模态对话框阻止,可能产生一些问题,

比如你GetSelection()完成后还要从控制台输出一些信息,但是因为窗口显示出来了,那些信息可能输出到一半就暂停了,因为编辑器区域不刷新了。

 

 所以在某些情况下可以选择先调用Editor.StartUserInteraction() 函数,手动隐藏窗口,它会在using结束之时才让窗口显示出来。

 1 private void button_Click(object sender, EventArgs e)
 2 {
 3     Document doc = AcAp.DocumentManager.MdiActiveDocument;
 4     Editor ed = doc.Editor;
 5     using (ed.StartUserInteraction(this))
 6     {
 7         PromptSelectionOptions ops = new PromptSelectionOptions { SingleOnly = true };
 8         var selectionResult = doc.Editor.GetSelection(ops);
 9         if (selectionResult.Status == PromptStatus.OK)
10         {
11             ed.WriteMessage("do something...");
12             ed.WriteMessage("do something...");
13         }
14     }
15 }    

在这个示例代码中,GetSelection()选择完成后,窗口仍然处于隐藏状态,直到第14行括号执行结束,窗口才会显示。

如果不使用StartUserInteraction() 函数,那么GetSelection()选择完成时,窗口会立即出现,if中的代码如果还在继续和编辑器交互,就可能被卡住,编辑器停止刷新,不会在编辑器中体现出来。

注意,在CAD2014中测试,StartUserInteraction()函数无效,在CAD2020中测试该函数有效,所以可能低版本对这个函数的支持有BUG,应该至少选择比2014更高的版本。

标签:模态,AutoCAD,对话框,GetSelection,编辑器,Editor,二次开发,窗口
From: https://www.cnblogs.com/TheRedHouse/p/17867471.html

相关文章

  • [转载]C/C++ 遍历窗口标题类名
    原地址:https://cloud.tencent.com/developer/article/2201930遍历每个进程,一次查找进程下的窗口,找到窗口标题为“”,窗口类名为“RunDll”的窗口。如果找到返回true,没找到返回false。#pragmaregion依赖typedefstructEnumHWndsArg{std::vector<HWND>*vecHWnds......
  • LIMS实验室信息管理系统源码,支持二次开发
    LIMS实验室信息管理系统源码,支持二次开发LIMS实验室信息管理系统是一种软件类型,旨在通过跟踪与样品、实验、实验室工作流程和仪器相关的数据,提高实验室产能和效率。覆盖实验室从合同审批、委托下单、样品管理、生产调度、检测记录、报告管理、财务开票结算等全业务的过程管理。1、......
  • go开发之基于个微机器人的二次开发
    请求URL:http://域名地址/sendText请求方式:POST请求头Headers:Content-Type:application/jsonAuthorization:login接口返回参数:参数名必选类型说明wId是string登录实例标识wcId是string接收方群idcontent是string文本内容消息(@的微信昵称需要自己拼接)at是string艾特的微信id(多个以逗号......
  • Win10系统怎么设置关闭任务栏预览窗口
    #win10使用技巧#我们日常在使用win10系统电脑打开多个任务后,鼠标经过任务栏上的任务图标,就会出现对应的预览窗口。这一功能对于大多数用户来说都是挺方便的,但也有一些用户会不喜欢这样的预览窗口设置。那么我们该怎么设置关闭任务栏的预览窗口呢?下面就让我们一起来看看具体的设置......
  • python开发之个微机器人的二次开发
    请求URL:http://域名地址/sendText请求方式:POST请求头Headers:Content-Type:application/jsonAuthorization:login接口返回参数:参数名必选类型说明wId是string登录实例标识wcId是string接收方群idcontent是string文本内容消息(@的微信昵称需要自己......
  • 将Autodesk的AutoCAD嵌入WEB网页中在线查看、编辑、审阅DWG文档
    大家都知道猿大师办公助手支持把微软OFFICE和金山WPS可以完美嵌入到浏览器中,并实现在线编辑文档、表格和PPT等功能,但是还有很多人不知道:猿大师还可以把Autodesk的AutoCAD、DWGTrueView、DesignReview等软件嵌入到浏览器网页中,实现dwg、dxf等工程图在线查看、编辑、审阅等。下面......
  • 浏览器跨 Tab 窗口通信原理及应用实践
    最近,相信大家一定被这么个动效给刷屏了:以至于,基于这个效果的二次创作层出不穷,眼花缭乱。基于跨窗口通信的弹弹球:基于跨窗口通信的FlippyBird:我也尝试制作了一个跨Tab窗口的CSS动画联动,效果如下:代码不多,核心代码200行,感兴趣的可以戳这里:Github-broadcastAnimati......
  • UG\NX二次开发 获取部件的4x4矩阵
    文章作者:里海方法1:输入部件occ,获取矩阵。用函数UF_ASSEM_ask_transform_of_occ(),比较直接。方法2:输入部件的实例或事例,获取矩阵。用函数UF_ASSEM_ask_component_data()。通过部件事例获取实例的方法函数:......
  • UG\NX二次开发 获取通过部件事例中的对象事例获取部件的事例
    文章作者:里海方法1:UF_ASSEM_ask_part_occurrence(tagBody,&tagPartOcc);方法2:UF_ASSEM_ask_parent_component(tagBody,&tagPartOcc);......
  • NX二次开发 用数学函数获得两点的距离
    简介:    NX二次开发用数学函数获得两点的距离。代码://获得平面上2点距离doublegetPointToPointDis(doublep1[2],doublep2[2]){returnsqrt((p1[0]-p2[0])*(p1[0]-p2[0])+(p1[1]-p2[1])*(p1[1]-p2[1]));}    me.hpp内容:文章作者:里海......