如何用C#在AutoCAD2007或更老的版本中获取线的长度
来源:互联网 发布:网上电子申报软件 编辑:程序博客网 时间:2024/05/06 16:56
最近有人提到他用.NET在2008版上开发了一款软件,其中使用了获取直线长度的功能(就是利用Line.Length属性),现在想在2007版本下也使用该软件,但是2007版本中.NET编程接口不支持Line.Length属性,如果他自己来实现该方法,觉得工作量比较大,想知道有没有好的解决方法。
AutoCAD ActiveX API里面的AcadLine对象支持Length属性,所以最简单的解决方法就是从.NET程序中调用ActiveX API,将.NET中的Line对象转化成AcadLine对象,获取这个Length属性。
我用C#写了个范例,主要代码如下:
注:你需要在工程中增加对AutoCAD/ObjectDBX Common 17.0 Type Library的参考。
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Interop.Common;
// Define Command "getLine"
[CommandMethod("getLine")]
static public void EntityTest()
{
Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
PromptEntityOptions entopts = new PromptEntityOptions("Pick a line of your choice from the drawing");
entopts.Message = "Pick a line of your choice from the drawing";
PromptEntityResult ent = null;
try
{
ent = ed.GetEntity(entopts);
}
catch
{
ed.WriteMessage("You did not select a valid entity");
return;
}
if (ent.Status != PromptStatus.Error)
{
ObjectId entid = ent.ObjectId;
Database db = Application.DocumentManager.MdiActiveDocument.Database;
Autodesk.AutoCAD.DatabaseServices.TransactionManager tm = db.TransactionManager;
using (Transaction myT = tm.StartTransaction())
{
Entity entity = (Entity)tm.GetObject(entid, OpenMode.ForRead, true);
if (entity.GetType().FullName=="Autodesk.AutoCAD.DatabaseServices.Line")
{
AcadLine myL = entity.AcadObject as AcadLine;
ed.WriteMessage("length of the line is:" + myL.Length);
}
myT.Commit();
}
}
}
从我的资源下载中心可以下载完整的源代码:http://barbarahan.download.csdn.net
- 如何用C#在AutoCAD2007或更老的版本中获取线的长度
- 在C#中如何获取字符串的真实的长度
- 在C#中如何获取字符串的真实的长度
- C#如何用HttpWebRequest获取真实的下载地址
- 如何用Revit API 在Revit的模型中获取轮廓族的截面信息
- 如何用js在repeater中获取服务器控件的id
- 如何用Python在豆瓣中获取自己喜欢的TOP N电影信息
- 在C#中如何用字符串来替代对象的名称
- JavaScript中如何用原生的js获取style样式
- 在java中,如何用最简单,效率最高的获取两个list中相同的数据
- 在eclipse中如何用JDK的帮助文档
- 在eclipse中如何用JDK的帮助文档
- 如何用javascript在iframe中打开新的url
- 如何用javascript获取select的值
- 如何用.NET获取BO的token
- 如何用 DELPHI 获取 CPU 的序列号
- 如何用jquery获取文本框的值
- 如何用c#来制作一个activeX控件或类似的东西
- ADC0809 C程序
- Javascript脚本库
- 调用聚合函数的错误用法
- 各种计算机语言的盘点(zt)
- Windows Mobile上的模拟按键操作
- 如何用C#在AutoCAD2007或更老的版本中获取线的长度
- Winform 中listBox 控件的数据源捆绑和选中值读取
- Flex显示图片的常用方式
- T-SQL编程
- 这几天用template的郁闷和自己的无知(1)
- 通过一个游戏编程熟悉文件操作
- 递归删除目录和文件
- Access中"是/否"数据类型是怎样处理的
- SWT 圆角矩形窗口实现