4.基于C#的CAD二次开发-文件操作

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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ri1520011

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值