64 lines
2.2 KiB
C++
64 lines
2.2 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__
|