1.目的
本文的目的是利用C#中选择集GetSelection函数得到CAD中标注尺寸
2.实现代码
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.Runtime;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AutoDrawingSF
{
public class Drawing
{
[CommandMethod("AutoDrwing")]
public void AutoDrwing()
{
Database db = HostApplicationServices.WorkingDatabase;
Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
//保存图形信息到Excel文件
string fileName = ed.OpenSaveDialog(db);
if (fileName == "") return;
TypedValue[] values = new TypedValue[]
{
//设定为标注图元
new TypedValue((int)DxfCode.Start,"DIMENSION"),
//new TypedValue((int)DxfCode.Start,"CIRCLE"),
};
//过滤标注图元
SelectionFilter filter = new SelectionFilter(values);
PromptSelectionResult psr = ed.GetSelection(filter);
List strX = new List();
List strY = new List();
//List ids = new List();
if (psr.Status == PromptStatus.OK)
{
SelectionSet sSet = psr.Value;
ObjectId[] ids = sSet.GetObjectIds();
//如果ids中没有数据则返回;
if (ids.Length == 0) return;
//开启事务处理
using (Transaction trans = db.TransactionManager.StartTransaction())
{
for (int i = 0; i
//获取标注尺寸长度,Y轴方向尺寸
double Distan = ((RotatedDimension)ent).XLine1Point.GetDistanceBetweenTwoPoint(((RotatedDimension)ent).XLine2Point);
strY.Add(Distan.ToString());
}
else if (DistanceY == 0)
{
//获取标注尺寸长度
double Distan = ((RotatedDimension)ent).XLine1Point.GetDistanceBetweenTwoPoint(((RotatedDimension)ent).XLine2Point);
strX.Add(Distan.ToString());
}
}
//关闭事务处理
trans.Commit();
}
}
}
}
}
3.CAD常用图元类型
c#选择集中不仅能过滤标注图元,还能用来过滤直线(LIne),圆(circle),圆弧(Arc)等等,CAD中常见图元详见下图:
图元类型前面AcDb在实际程序开发中,不可添加到程序中;
4.其他相关资料链接
1)选择集Dxf规则 https://blog.csdn.net/weixin_42339460/article/details/80662972?ops_request_misc=&request_id=&biz_id=102&utm_term=CAD%E4%BA%8C%E6%AC%A1%E5%BC%80%E5%8F%91(.net)%E9%80%89%E6%8B%A9%E9%9B%86DXF&utm_medium=distribute.pc_search_result.none-task-blog-2blogsobaiduweb~default-3-80662972.pc_v2_rank_blog_default&spm=1018.2226.3001.4450 2)选择集讲解 https://blog.csdn.net/yzk1062913581/article/details/105537412?ops_request_misc=&request_id=&biz_id=102&utm_term=CAD%E4%BA%8C%E6%AC%A1%E5%BC%80%E5%8F%91(.net)%E9%80%89%E6%8B%A9%E9%9B%86&utm_medium=distribute.pc_search_result.none-task-blog-2blogsobaiduweb~default-0-105537412.pc_v2_rank_blog_default&spm=1018.2226.3001.4450
|