1.操作界面
虽然很多资料里都用命令的形式进行操作,但在实际运用中,命令更多的还是用于打开交互界面窗体和方便菜单调用,日常使用还是以界面交互为主。
2.对应代码
/// <summary>
/// 从模板中新建文件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
string strTemplatePath = @"E:\work\cad二次开发\基于C#的CAD二次开发\CAD模板.dwt";
DocumentCollection docMgr1 = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager;
Document doc1 = docMgr1.Add(strTemplatePath);
docMgr1.MdiActiveDocument = doc1;
}
/// <summary>
/// 打开现有文件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e)
{
string strFileName =@"E:\work\cad二次开发\基于C#的CAD二次开发\CAD文件\打开测试.dwg";
DocumentCollection docMgr1 = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager;
if (File.Exists(strFileName))
{
docMgr1.Open(strFileName, false);
}
}
/// <summary>
/// 获取所有已打开的文件,根据条件激活对应文件(注释掉的部分)
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button3_Click(object sender, EventArgs e)
{
DocumentCollection docMgr1 = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager;
foreach (Document doc1 in docMgr1)
{
/*
if(doc1.Name=="XXXX")
{
Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument=doc1;
}
*/
int index = dataGridView1.Rows.Add();
dataGridView1.Rows[index].Cells[0].Value=doc1.Name;
dataGridView1.Rows[index].Cells[1].Value = doc1.IsActive;
}
}
/// <summary>
/// 通过Database将文件在内存中打开,不显示在CAD文件界面,常用语跨文件操作、后台获取文件信息等
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button4_Click(object sender, EventArgs e)
{
string filename = @"E:\work\cad二次开发\基于C#的CAD二次开发\CAD文件\打开测试.dwg";
Database db = new Database(false, true);
db.ReadDwgFile(filename, FileOpenMode.OpenForReadAndAllShare, true, "");
db.Dispose();//关闭内存中打开的文件
}
/// <summary>
/// 保存文件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button5_Click(object sender, EventArgs e)
{
Document doc1 = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
string strName = doc1.Name;
object obj = Autodesk.AutoCAD.ApplicationServices.Application.GetSystemVariable("DWGTITLED");
if (System.Convert.ToInt16(obj) == 0)
{
//新建的文件,保存的路径
strName = @"E:\work\cad二次开发\基于C#的CAD二次开发\CAD文件\保存的文件.dwg";
}
//已有的文件,直接保存
doc1.Database.SaveAs(strName, true, DwgVersion.Current, doc1.Database.SecurityParameters);
}
/// <summary>
/// 查看当前文档是否需要保存
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button6_Click(object sender, EventArgs e)
{
object obj = Autodesk.AutoCAD.ApplicationServices.Application.GetSystemVariable("DBMOD");
if (System.Convert.ToInt16(obj) != 0)
{
MessageBox.Show("当前文档未保存");
}
}
//关闭文件
private void button7_Click(object sender, EventArgs e)
{
Document doc1 = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
//doc1.CloseAndSave(doc1.Name);//保存并关闭指定文件
doc1.CloseAndDiscard();//关闭当前文件,不保存
}
3.主要代码释义
文件管理器。对已打开的文件进行管理。将文件添加到文件管理器中,相当于打开文件。
DocumentCollection docMgr1 = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager;
当前文档。如无切换,后面的操作都是针对该文档进行操作。
Document doc1 = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
文档切换。将文档doc1切换为当前文档,后续文档将针对该文档进行操作。
Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument=doc1;