好吧,就这么定了。我昨天在运行一台有AutoCAD 2013的机器。我还在Visual Studio Express中使用一个C#程序,该程序收集了一些数据,启动了AutoCAD 2013,加载并执行了一个LISP文件,该文件准备并保存了一个图形。一切都很好。
昨晚他们把我的系统升级到了一台新的更快的机器上,它有AutoCAD 2015 Mechanical。我使用的是相同的Visual Studio C代码和相同的LISP代码。该过程开始,AutoCAD打开并启动图形,但随后暂停。我可以看到它暂停的地方,我检查了LISP代码是否有任何异常,但似乎什么都没有。因此,我在2015年机器上加载了LISP代码,打开了LISP IDE,并从AutoCAD命令行运行它,它运行良好。只有当我使用AutoCAD 2015从C代码运行它时,它才会暂停。
如果我将窗口聚焦在AutoCAD窗口上并单击鼠标或按enter键,则可以继续暂停。但这只发生在2015年的机器上。使用完全相同的代码,这种暂停不会在2013年的机器上发生。是的,当我在机器之间切换时,我用VS中的2015 COM引用替换了2013 COM引用。
我确切地知道代码暂停的位置,它位于两个dimlinear命令之间:
- (command "._DIMLINEAR" (polar (polar pt1 pi 4) a90 2) (polar (polar pt2 0 4) a90 2) (polar pt1 a90 24) "")
- (command "._DIMLINEAR" (polar (polar pt1 pi 2) a90 4) (polar (polar pt4 pi 2) a270 4) (polar pt1 pi 24) "")
第一个dimlinear命令执行,然后在2015年暂停。除非我与第二个命令交互,否则它不会执行。正如你们大多数人所知,我正在开发严格自动化的程序,这些程序不能依赖于任何类型的用户输入。 |