Files

63 lines
2.4 KiB
C++
Raw Permalink Normal View History

2026-10-04 00:04:20 +08:00
#ifndef _KTGEUTILITY_H__
2026-09-28 15:28:50 +08:00
#define _KTGEUTILITY_H__
#if _MSC_VER > 1000
#pragma once
#endif
class KTGeUtility
{
public:
KTGeUtility();
virtual ~KTGeUtility();
2026-10-04 00:04:20 +08:00
//中点
2026-09-28 15:28:50 +08:00
static AcGePoint3d Mid(const AcGePoint3d& ptGe1,const AcGePoint3d& ptGe2);
2026-10-04 00:04:20 +08:00
//中点
2026-09-28 15:28:50 +08:00
static AcGePoint3d Mid(AcDbCurve* pCurve);
static AcGePoint2d ucsToDcs(const AcGePoint3d& pt);
2026-10-04 00:04:20 +08:00
//点投影到plane面上,作为XY2d面上的点使用
2026-09-28 15:28:50 +08:00
static BOOL ToPlaneInWcs2D(AcGePoint3d& ptGe,const AcGePlane& plane);
2026-10-04 00:04:20 +08:00
//向量投影到plane面上,作为XY2d面上的向量使用
2026-09-28 15:28:50 +08:00
static BOOL ToPlaneInWcs2D(AcGeVector3d& vt,const AcGePlane& plane);
2026-10-04 00:04:20 +08:00
//点在曲线上排序
2026-09-28 15:28:50 +08:00
static void SortPoints(AcGePoint3dArray& points,AcDbCurve* pLine);
2026-10-04 00:04:20 +08:00
//判断两条平行直线投影到其中一条上,是否有共同部分
2026-09-28 15:28:50 +08:00
static BOOL ParallelLinesHasCommon(AcDbLine* pLine1,AcDbLine* pLine2);
2026-10-04 00:04:20 +08:00
//根据ptGeNear投影到id上的点向两边偏移,然后打断中间的段[三通用]
2026-09-28 15:28:50 +08:00
static BOOL BreakLine(AcDbObjectId& id,AcGePoint3d& ptGeNearCen,double dHalfWidth);
2026-10-04 00:04:20 +08:00
//根据ptGeNear投影到id上的点向两边偏移,然后打断中间的段[三通用]
2026-09-28 15:28:50 +08:00
static BOOL BreakLine(AcDbEntity* pEnt,AcGePoint3d& ptGeNearCen,double dHalfWidth);
2026-10-04 00:04:20 +08:00
//以ptGeOn为中点向两边打断
2026-09-28 15:28:50 +08:00
static BOOL MidBreakLine(AcDbEntity* pEnt,AcGePoint3d& ptGeOn,double dHalfWidth);
2026-10-04 00:04:20 +08:00
//找距离pLineCen 最近的平行线
2026-09-28 15:28:50 +08:00
static BOOL FindClosestLineParallelTo(AcDbObjectIdArray& arIds,AcDbLine* pLineCen,int& nIndex);
static BOOL PickDir(LPCTSTR pszTip,const AcGePoint3d& ptGeBase,AcGeVector3d& vtDir);
2026-10-04 00:04:20 +08:00
//找组中的hit的元素,id是组中一个实体
2026-09-28 15:28:50 +08:00
static BOOL FindHitEnt(AcDbObjectIdArray& ids,AcGePoint3d& ptGe,AcDbObjectId& idHit);
2026-10-04 00:04:20 +08:00
//设备新增函数
2026-09-28 15:28:50 +08:00
static AcGePoint2d P3d_to_P2d(AcGePoint3d pt);
2026-10-04 00:04:20 +08:00
//获取对应样式的文字高度,宽度,角度
2026-09-28 15:28:50 +08:00
static void KTGetTextstyle(CString sStyle,double& dHeight,double& dWidth,double& dAngle);
static void MisicellaElbow(AcGePoint3d ptBase,AcGeVector3d vM,AcGeVector3d vS,double dA,double dB,double dC,double dD);
2026-10-04 00:04:20 +08:00
//新增的批量断线函数
2026-09-28 15:28:50 +08:00
static void BatchBreak(AcDbObjectId idDraw,AcDbObjectId idOld,int nNo,AcGePoint3d ptStart,AcGePoint3d ptEnd,double dBreakDis,int nDraw,int nCross);
static bool LineBreak(ads_name ename,ads_name adsLine,ads_name ssResult,double dBreakDis,int nDraw,int nCross);
static double AngleToXAxis(AcGePoint3d pt1,AcGePoint3d pt2);
};
#endif //_KTGEUTILITY_H__