一张贴纸上有很多不同的形状,各个图案之间有很多间隙,那么如何得知他的材料利用程度呢?答:方形贴纸的面积减去图案的面积。
代码如下:
[CommandMethod("qq")]//lesson2____line,circle
public void asd()
{
Database db = HostApplicationServices.WorkingDatabase;
Document doc = Application.DocumentManager.MdiActiveDocument;
Editor ed = doc.Editor;
using (Transaction trans = db.TransactionManager.StartTransaction())
{
//获得选中的多边形
var aa = from o in db.GetSelection<Polyline>()
where o.ColorIndex >=0
select o;
double area1 = 0, area2 = 0,qq=0;
//遍历已选中的所有多段线
foreach(Polyline py in aa)
{
if (py.ColorIndex == 6)
{
//洋红色的贴纸总面积
area1 = py.Area;
}
else
{
//图案面积
area2 = area2+ py.Area;
}
}
//计算利用率
qq = area2 / area1;
qq = Math.Round(qq, 3);
//转成百分数
string qqq = qq.ToString("P");
//弹出提示
Application.ShowAlertDialog("贴纸的材料利用率: " + qqq);
trans.Commit();
}
}
GetSelection选择集直接引用书中第三章“选择集的简单化:LINQ”。最后效果演示如下: