Files
envi-code/SourceCode/Code2026/PIDLineCmd/KTGeUtility.h
T
gjm 164968b62e chore
把非utf8-bom编码的cpp/h文件改为 utf8 bom 编码, msvc识别utf8编码时,如果不是bom格式的,会使用当前cp_oem来解码.
2026-10-04 00:04:20 +08:00

64 lines
2.4 KiB
C++

#ifndef _KTGEUTILITY_H__
#define _KTGEUTILITY_H__
#if _MSC_VER > 1000
#pragma once
#endif
class KTGeUtility
{
public:
KTGeUtility();
virtual ~KTGeUtility();
//中点
static AcGePoint3d Mid(const AcGePoint3d& ptGe1,const AcGePoint3d& ptGe2);
//中点
static AcGePoint3d Mid(AcDbCurve* pCurve);
static AcGePoint2d ucsToDcs(const AcGePoint3d& pt);
//点投影到plane面上,作为XY2d面上的点使用
static BOOL ToPlaneInWcs2D(AcGePoint3d& ptGe,const AcGePlane& plane);
//向量投影到plane面上,作为XY2d面上的向量使用
static BOOL ToPlaneInWcs2D(AcGeVector3d& vt,const AcGePlane& plane);
//点在曲线上排序
static void SortPoints(AcGePoint3dArray& points,AcDbCurve* pLine);
//判断两条平行直线投影到其中一条上,是否有共同部分
static BOOL ParallelLinesHasCommon(AcDbLine* pLine1,AcDbLine* pLine2);
//根据ptGeNear投影到id上的点向两边偏移,然后打断中间的段[三通用]
static BOOL BreakLine(AcDbObjectId& id,AcGePoint3d& ptGeNearCen,double dHalfWidth);
//根据ptGeNear投影到id上的点向两边偏移,然后打断中间的段[三通用]
static BOOL BreakLine(AcDbEntity* pEnt,AcGePoint3d& ptGeNearCen,double dHalfWidth);
//以ptGeOn为中点向两边打断
static BOOL MidBreakLine(AcDbEntity* pEnt,AcGePoint3d& ptGeOn,double dHalfWidth);
//找距离pLineCen 最近的平行线
static BOOL FindClosestLineParallelTo(AcDbObjectIdArray& arIds,AcDbLine* pLineCen,int& nIndex);
static BOOL PickDir(LPCTSTR pszTip,const AcGePoint3d& ptGeBase,AcGeVector3d& vtDir);
//找组中的hit的元素,id是组中一个实体
static BOOL FindHitEnt(AcDbObjectIdArray& ids,AcGePoint3d& ptGe,AcDbObjectId& idHit);
//设备新增函数
static AcGePoint2d P3d_to_P2d(AcGePoint3d pt);
//获取对应样式的文字高度,宽度,角度
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);
//新增的批量断线函数
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__