批量获取图形视图中心坐标
分类:计算机网络

C#操作CAD-初始化、引用dll,

那代码挺有用的,那时候帮自身消除了超级大的标题,谢谢NetObjArx编程论坛的lzx838在 英特网分享出来的代码。

操作cad等方法有大多,例如C,C++,vb、lisp(功能最高,可是言语结构性太差卡塔尔国和C#,因为大家个人习贯和有益等原因,在这解说一下用C#操作流程,后续会更新操作图层、扩张数据、绘图等操作步骤。当然前提是计算机上用cad程序,要不然没办法调节和测验哟!

1、第一步新建C#减轻方案,然后新建类库。

2、引用cad内部dll接口。

援用acdbmgd.dll和acmgd.dll,它们在cad安装目录都能超级轻易找到。

别忘了援用后改过dll属性为复制到本地。

3、援引命名空间。

骨子里这一步细枝末节,因为只要vs里面有像样resharp等插件等话,供给等时候会只好提醒援用。在那把常用的命名空间写一下:

using Autodesk.AutoCAD.DatabaseServices;// (Database, DBPoint, Line, Spline)  using Autodesk.AutoCAD.Geometry ;//(Point3d, Line3d, Curve3d)  using Autodesk.AutoCAD.ApplicationServices;// (Application, Document)  using Autodesk.AutoCAD.Runtime;// (CommandMethodAttribute, RXObject, CommandFlag)  using Autodesk.AutoCAD.EditorInput ;//(Editor, PromptXOptions, PromptXResult) using AcadApp = Autodesk.AutoCAD.ApplicationServices.Application;

为了前面编写代码的方面,也可有在类里面增加常用的类,举个例子:

public Document doc = AcadApp.DocumentManager.MdiActiveDocument; public Database db = AcadApp.DocumentManager.MdiActiveDocument.Database; public Editor ed = AcadApp.DocumentManager.MdiActiveDocument.Editor; 4、与顾客前台交互作用数据的诀要有三种,风姿罗曼蒂克种是用命令行输入自定义命名,风流倜傥种是由此自定义winform通过按键操作,原理都以一模二样。在此风度翩翩一介绍。 首先,我们必要会用命令与前台交互作用,因为winform也是急需用命令调出的,那是底工必得驾驭。 方法很简单,在类上丰裕暗记就好了,比方:

[CommandMethod("myZoom")]
public void Zoom()
 {
            Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
            Point2d pt1 = new Point2d(0, 0);
            Point2d pt2 = new Point2d(2, 2);
            string cmd = string.Format("Zoom {0},{1} {2},{3} ", pt1.X, pt1.Y, pt2.X, pt2.Y);
            doc.SendStringToExecute(cmd, true, false, false);
}

那正是多个我们自定义的图形缩放的通令,输入myZoom就足以自动缩放到由(0,0卡塔 尔(阿拉伯语:قطر‎和(2,2卡塔尔为两极分化的矩形大小。

5、好了,贰个简便的作用就完事了,生成dll后大家该怎么样调用呢?

很简短,打开用cad打开dwg图形,在命令行输入netload(或许在菜单栏接收工具-加载net程序卡塔尔然后接收刚刚生成的dll文件就好了。

下一场输入myZoom试试,看看有未有转移?假设你有哪些难题,请直接留言回复,我们大器晚成道学习共同发展。

持续请继续关心cad更多操作办法。

操作cad等措施有过多,举例C,C++,vb、lisp(效用最高,然则言语结构性太差卡塔 尔(英语:State of Qatar)和C#,因为大家个人习贯和便利等...

 

  1. Editor ed = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
  2.             DocumentCollection docs = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager;
  3.             //获取内定目录下的有所dwg文件
  4.             ArrayList FileList = Class1.LzxGetAllFiles(@"E:复件 成果分幅图");
  5.             int i = 0;
  6.             //遍历每三个dwg文件
  7.             foreach (string FileString in FileList)
  8.             {
  9.                 //假诺当前文书档案为空时,则新建文书档案.
  10.                 if (Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.Count == 0)
  11.                 {
  12.                     Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.Add("acad.dwt");
  13.                 }
  14.                 //打开dwg文件
  15.                 Document doc = docs.Open(FileString, true);
  16.                 //设置当前的运动文书档案为新开采的Dwg文件
  17.                 if (!doc.IsActive)
  18.                     Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument = doc;
  19.                 //最大化图形
  20.                 Autodesk.AutoCAD.Internal.Utils.ZoomObjects(true);
  21.                 //遵照数据库更新平面视口
  22.                 doc.Editor.UpdateTiledViewportsFromDatabase();
  23.                 //获取视图主旨坐标
  24.                 ViewTableRecord curVtr = doc.Editor.GetCurrentView();
    1.                 //显示获取的坐标值
  25.                 MessageBox.Show("X:" + curVtr.CenterPoint.X.ToString("0.0000") + "  Y:" + curVtr.CenterPoint.Y.ToString("0.0000"));
  26.                 i++;
  27.                 //文件保存及停业
  28.                 doc.Database.SaveAs("E:\复件 成果分幅图\新建文件夹\" + i.ToString() + ".dwg", DwgVersion.Current);
  29.                 doc.CloseAndDiscard();
  30.             }

本文由美高梅网址发布于计算机网络,转载请注明出处:批量获取图形视图中心坐标

上一篇:没有了 下一篇:【美高梅网址】引用类型和值类型,值类型和引
猜你喜欢
热门排行
精彩图文