[kean]把autocad 2009嵌入一个单独的对话框 - 精华帖集合
www.dimcax.com
[kean]把autocad 2009嵌入一个单独的对话框
,
原贴:
翻译:才鸟( )
autocad 2009引入了一个通过activex控件在一个单独的对话框或窗体内购入autocad程序的功能。这个功能已经存在于好几个版本的autocad oem中了,现在这个功能可以在主要的autocad产品中可以得到。
控件工作的方式是在后台载入一个autocad实例(系统中必须安装autocad,这个应该不用说了,但我还是提醒一下:-),然后控件会把autocad生成的图形载入到它所确定的区域。它也会响应从鼠标移动或按键来让你控制内嵌的autocad。
这个控件非常棒:你可以看到标准的光标,能够通过动态输入来键入命令,或多或少可以与在完整的autocad程序中做相同的事。如果你想为他人一个缩减的用户界面,那么这个控件是特别方便的。
让我们来看一下这个控件,请在visual studio 2005中新建一个c#windows程序项目(你可以使用任何一个你喜欢的activex容器,它甚至可以用在网页或office文档中):
visual studio创建完这个新的项目后,我们需要在工具箱中添加控件。如果你在工具箱中右击,你应该可以选择“选择项目...”。
在这com组件中,应该有一个"acctrl"的项目。要不然的话,你可以在c:\program files\common files\autodesk shared\acctrl.dll中浏览到它。
然后只要简单地把控件放到窗体中。
做完上面的工作,我们将添加其它的控件——用于选择图形路径和一个文本字符串用来向内嵌的autocad程序发布命令。
下面是我们用来控制窗体中控件的c#代码。
using system;
using system.windows.forms;
namespace embedautocad
{
public partial class mainform : form
{
public mainform()
{
initializecomponent();
}
private void browsebutton_click(object sender, eventargs e)
{
openfiledialog dlg = new openfiledialog();
dlg.initialdirectory =system.environment.currentdirectory;
dlg.filter = "dwg files (*.dwg)|*.dwg|all files (*.*)|*.*";
cursor oc = cursor;
string fn = "";
if (dlg.showdialog() ==dialogresult.ok)
{
cursor = cursors.waitcursor;
fn = dlg.filename;
refresh();
}
if (fn != "")
this.drawingpath.text = fn;
cursor = oc;
}
private void loadbutton_click(object sender, eventargs e)
{
if (system.io.file.exists(drawingpath.text))
axacctrl1.src = drawingpath.text;
else
messagebox.show("file does not exist");
}
private void postbutton_click(object sender, eventargs e)
{
axacctrl1.postcommand(cmdstring.text);
}
}
}
复制代码
最后,运行程序并通过browse/load按钮来运行程序,非常有趣的事情开始了。:-)
试着通过动态输入或者"post a command"文本框来键入命令。你可能会有点迷惘,因为缺少了命令行(我真的太喜欢我的命令行了),但是动态输入可以让你至少看起来是在键入东西。
本例的c#代码:
太好了,老大,是不是只有安装了2009版之后才会有这个控件啊.
模具相关绿色软件
皆唯网
这个功能很不错,我以前就想要这个!!!
每个人都应该有一颗感恩之心!
好像忒牛了点。
牛
这个类似于gis的map开发了
vb c# vlisp autocad gis
非常好的功能,其他版本的cad有这个控件吗?
是不是还是需要安装cad2009,只是用这个控件的时候不用直接打开cad的界面了?
应该是09才有的,因为我没装09,装了08,到相关文件夹中未找到acctrl.dll,结合菜鸟的翻译可以得出结论,只有装了09的系统才有此控件。
但是这个控件能否拷贝到没有09的机器上使用还未确定,我估计是不行,有朋友实验过了请留言。
没有这个控件可以用win api设置cad的parent为你自己的窗体,也可以把cad嵌入自己的界面来。
楼上说的没错,不装09这个控件是不能用的。
没有这个控件可以用win api设置cad的parent为你自己的窗体,也可以把cad嵌入自己的界面来。
这个有没有具体的代码实例?
c#最适合开发autocad,因为它拥有vb容易的特点,却具有vc++的强大功能。
菜鸟兄,是setparent函数,网上的实例大把大把的。