四、二维线实体类(AcGeLinearEnt2d)
继承关系:为二维曲线类(AcGeCurve2d)的派生类,见第一条类图
派生类
直线:AcGeLine2d,对应数据库类型AcDbXline
线段:AcGeLineSeg2d,对应数据库类型AcDbLine
射线:AcGeRay2d,对应数据库类型AcDbRay
4.1 常用方法
方法列表
名称 释义
set 创建直线:传入两点
getPerpLine 条件创建直线:过已知点,创建垂直于调用直线对象的直线
sColinearTo 判断线重合
sParallelTo 判断线平行
sPerpendicularTo 判断线垂直
ntersectWith 传入线对象,获取交点
线段、射线参考直线方法调用
4.2 方法示例
- 代码示例
-
AcGePoint2d pt1(100, 0), pt2(0, 100), pt3(100, 100), pt4; AcGeLine2d xline(AcGePoint2d::kOrigin, pt1); AcGeLine2d yline(AcGePoint2d::kOrigin, pt2);// 条件创建直线:过已知点pt2,获得垂直于yline线的直线hline AcGeLine2d hline; yline.getPerpLine(pt2, hline);// set方法获得直线:传入两点 AcGeLine2d linetemp; linetemp.set(pt1, pt2); // 获取直线的向量 AcGeVector2d vec = linetemp.direction(); acutPrintf(_T("\n直线与X轴正向夹角(弧度):%0.3f"), vec.angle());// 以下函数:tol默认e-10,且均可省略 AcGeTol tol; tol.setEqualPoint(0.1);if (hline.isColinearTo(hline, tol))acutPrintf(_T("\n两线重合")); if (xline.isParallelTo(hline,tol))acutPrintf(_T("\n两线平行")); if (xline.isPerpendicularTo(yline,tol))acutPrintf(_T("\n两线垂直")); // xline获取与yline的交点pt4 xline.intersectWith(yline, pt4); acutPrintf(_T("\n交点坐标(%0.3f,%0.3f)"), pt4.x, pt4.y);