使用工具==CAD2018+VS2022
主要作用==给定三个坐标点,绘制任意角度的矩形
绘制条件:1、给定的三个坐标点连线必须成直角。
2、如图 已知点jxPo1, jxPo2, jxPo3,这三个点连线必须成直角,不然绘制出来就不是矩形而是四边形。
3、绘制顺序 从点jxPo1开始,连接 jxPo2,最后连接 jxPo3,或者从点jxPo3开始,连接 jxPo2,最后连接 jxPo1,其他顺序也绘不出矩形。
绘制过程:1、如图已知三个坐标点分别为 jxPo1, jxPo2, jxPo3,如果求出 点jxPo4就可以绘制出矩形。通过 镜像 就可以求出点jxPo4。
2、具体思路,分别求出 jxPo1, jxPo2与jxPo1, jxPo3的中点 zhongPo1、zhongPo2,通过这两个中点来镜像点 jxPo3,镜像后得到的点就是jxPo4。
具体代码
Database db = HostApplicationServices.WorkingDatabase;
Editor ed = acadApp.Application.DocumentManager.MdiActiveDocument.Editor;
//获取三点坐标
PromptPointResult psr1 = ed.GetPoint("矩形的第1个点");
Point3d jxPo1 = psr1.Value;
PromptPointResult psr2 = ed.GetPoint("矩形的第2个点");
Point3d jxPo2 = psr2.Value;
PromptPointResult psr3 = ed.GetPoint("矩形的第3个点");
Point3d jxPo3 = psr3.Value;
//中点 镜像点
Point3d zhongPo1 = new Point3d((jxPo1.X+jxPo2.X)*0.5,(jxPo1.Y+jxPo2.Y)*0.5,0);
Point3d zhongPo2 = new Point3d((jxPo1.X + jxPo3.X) * 0.5, (jxPo1.Y + jxPo3.Y) * 0.5, 0);
//镜像
//镜像线
Line3d miline = new Line3d(zhongPo1, zhongPo2);
//镜像
Matrix3d mt3d = Matrix3d.Mirroring(miline);
//需要被镜像的点
DBPoint pt = new DBPoint(jxPo3);
//镜像后的实体
DBPoint copyEnt = pt.GetTransformedCopy(mt3d) as DBPoint;
//镜像后的点
Point3d jxPo4 = new Point3d(copyEnt.Position.X,copyEnt.Position.Y,0);
//绘制矩形
Polyline pline = new Polyline();
pline.Layer = "wensd";//图层
pline.AddVertexAt(0,new Point2d(jxPo1.X,jxPo1.Y),0,0,0);
pline.AddVertexAt(1, new Point2d(jxPo2.X, jxPo2.Y), 0, 0, 0);
pline.AddVertexAt(2, new Point2d(jxPo3.X, jxPo3.Y), 0, 0, 0);
pline.AddVertexAt(3, new Point2d(jxPo4.X, jxPo4.Y), 0, 0, 0);
pline.Closed = true;//闭合
Tools.AddToModelSpace(db,pline);