using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Runtime;
using DYH.Tools;
using IFoxCAD.Cad;
using System;
namespace DYH.Demo
{
public class FuJinJiaGou
{
/// <summary>
/// 朋友提的负筋加钩需求测试
/// </summary>
[CommandMethod("FJJG")]
public void FJJG()
{
//建事务
using var tr = new DBTrans();
var pso1 = new PromptSelectionOptions() { MessageForAdding = "\n框选要修改的钢筋" };//设置选择集选项
var sf = new SelectionFilter(new TypedValue[] { new TypedValue(0, "LWPOLYLINE"), new TypedValue(90, 2) });//设置选择集筛选
var r1 = Env.Editor.GetSelection(pso1, sf);
if (r1.Status == PromptStatus.OK)
{
var list1 = r1.GetEntities<Polyline>(tr, OpenMode.ForWrite);//拿到选择的所有pl线
foreach (var pl in list1)//对每个pl线进行处理
{
var linewidth = pl.GetStartWidthAt(0);//获取线宽
var startPoint = pl.StartPoint.Z20();//获取起点
var endPoint = pl.EndPoint.Z20();//获取终点
var angle = startPoint.GetAngle(endPoint);//获取角度
//double czAngle;//声明一个角度,用于计算与线垂直的角度;
var czAngle = angle + (angle >= Math.PI * 0.75 && angle < Math.PI * 1.75 ? Math.PI * 0.5 : -Math.PI * 0.5);
var aPoint = startPoint.Polar(czAngle, 200);//计算出新增的亮点坐标
var dPoint = endPoint.Polar(czAngle, 200);
pl.AddVertexAt(0, aPoint.Point2d(), 0, linewidth, linewidth);//将新增的两个点坐标加入pl线内
pl.AddVertexAt(pl.NumberOfVertices, dPoint.Point2d(), 0, linewidth, linewidth);
pl.UpdateScreenEx();//刷新图元
}
}
}
}
}