从调色板取消当前命令并保留拾取优先?
**** Hidden Message ***** 您可以检查编辑器是否处于空闲状态,因此不必取消任何命令。对于活动命令,可以显示消息框或循环转义,直到没有处于活动状态的命令。我记得在极少数情况下,在取消命令之前,您甚至需要三次转义,但我不记得是哪一个。 在我最近的一篇文章中(https://drive-cad-with-code.blogspot.com/2018/10/executing-command-from-paletteset.html),我讨论了同一个主题,与另一个回复建议的主题类似:测试是否有正在进行的活动命令,并仅使用SendStringToExecute()发送“\x30\x30”以取消该命令,而不是使用带有“\x三十\x30”前缀的命令字符串调用sendstring-toexecate。这样,只要没有正在执行的活动命令,使用SendStringToExecute()从选项板集启动的命令将在命令具有CommandFlags时拾取第一个选择集。设置UsePickSet标志。 谢谢伙计们,这是一个多么简单的解决方案!诺曼,谢谢你在你的博客上写下来,这对我们来说是一个有价值的资源。NET CAD人员这是我在命令类中想出的:///。///通过SendStringToExecute发送命令。
///要保留Pickfirst,仅在有活动命令时取消。。
>/// //要发送的命令,。
公共静态无效发送(字符串cmd)。
{。
文档文档=CAD_App.DocumentManager.MdiActiveDocument;。
if(doc==null)返回;。
//最后必须有一个空间,。
if(!cmd.EndsWith (" ")) cmd += " ";。
//检查活动命令。
int activeCmd=Convert.ToInt32(CAD_App.GetSystemVariable("CMDActive"));。
如果(activeCmd>0)。
{。
//取消它。
doc.SendStringToExecute("\x03\x03", false, true, false);。
}。
//现在发送我们想要的命令。
doc.SendStringToExecute(cmd, false, true, false);。
}它从一个托盘中调用,类似于:私有空btnSetSize_Click(对象发送者,EventArgs e)。
{。
Commands.Send("IR_SetPipeSize");。
}背靠背SendStringToExecute调用可能有问题,因为我认为它是异步的,但到目前为止我还没有看到任何问题。
页:
[1]