(这篇贴子原来在前两天发到了明经新论坛上,后来才看清楚,新论坛暂时不能发贴,所以就在这里又发一次) 本人做AutoCAD二次开发也有两三年了,最初用AUTOLISP,后来用了一些VLISP的函数,再后来用VBA,现在我觉得最好还是用.NET直接开发AUTOCAD(VBA只是简化版和客制化的VB,有很多方面功能还不够强,比强表格控件等),现在开始用VB.NET 2005引用AUTOCAD2004类库开发AUTOCAD已几个月了,写了几个EXE出来,但其间也遇到很多问题,在此与各位一起探讨一下。 1.焦点切换问题: 一般我用 AppActivate 函数来控制,但感觉有时候好像控制得不是太好,从.NET切换到atuocad时,CAD的窗口不能至顶(同时配合ME.HIDE,大部分时候可以),大家有其它方法吗? 2.交互问题: 我的.NET程式在运行时,如何在CAD的命令栏中的输入?也就是说,比如,我的.net程序还在运行,窗口已经LOAD了,还没有点FORM的按纽操作,此时我还能在CAD的命令栏中输入并执行任何指令,但VBA开发时不会有这种情况,在VBA中好比你的窗口是一个模态窗口,你的程序窗口打开了,在AUTOCAD命令栏中就不能输入任何指令。但这一点在.net中真的好难控制,最麻烦的是我的EXE还没关闭,用户都可以把AUTOCAD关掉(不要告诉我写一个定时器来判断AUTOCAD是否在运行)。不知道有没有好的办法解决这个问题 3.选择集 这也是令我很郁闷的问题,使用过滤器做选择集,同一个程序,90%的时候都OK,但有时偶尔会出错,意思好像是说 autoca自动化错误(这个错误以前在vlisp的getboundingbox出现过,问题是字体不匹配)。这两天没这样出错,哪天又出错了,我把出错代码传上来。 暂时总结这么多吧,希望也用VB.NET做CAD开发的朋友们共同讨论下,共同进步,谢谢! |