BillPeet 发表于 2015-9-28 20:15:39

在AutoCad 2013中异步发送Lisp命令

我需要在我的插件中使用内置的AutoCad电气功能(我使用的是AutoCad电气2013 BTW),我需要同步执行命令,因为我正在记录命令创建的组件的对象ID,以便在以后的命令中使用。我已经尝试了几种不同的同步方法,包括acedCmd、AcadEvapLisp和Application.Invoke(我最喜欢的),以连接字符串和结果缓冲区等形式发送命令,这在大多数时候都有效。但是有几个命令(例如c:wd_insym2)给我错误:AutoCAD命令被拒绝:“_,UNDO”。Maxence on StackOverflow告诉我,这可能是因为一些可重入性问题,因为我有我的命令调用和ACad电气命令,它反过来调用UNDO命令。这是正确的吗?Maxence建议的另一件事是使用异步方法,并在继续之前使用Aetc运算符等待命令执行。等待ed.CommandAsync("(c:wd_insym2"C:/block/HT00_001.dwg"'(150 230)nil nil)");。
ed.WriteMessage("最后一个实体句柄:{0}",Utils.EntLast(),句柄);但是,该示例使用ed.CommandAsync(),这在AutoCad 2015中是新的,我似乎找不到任何可以以这种方式调用的AutoCad 2013 API方法(例如Aetcdoc.SendStringToExecute()出现错误,说“表达式不产生值”,关于如何使用2015年前的方法同步发送ALL命令或异步发送它们并使用Aetc的任何想法/建议?非常感谢。
**** Hidden Message *****
页: [1]
查看完整版本: 在AutoCad 2013中异步发送Lisp命令