#pragma once #include "AcGiDraw.h" #ifdef AECRXBASE_EXPORT #define AECDLLIMPEXP __declspec(dllexport) #else #define AECDLLIMPEXP __declspec(dllimport) #endif // 所有3dSolid实体,都在原点处绘制,绘制完成后,根据原点移动,根据Z轴旋转 // drawPipe及使用drawPipe的方法除外,可以直接定位 namespace GiDrawUtility { AECDLLIMPEXP void transfromRegion(AcDbRegion *pRegion , const AcGePoint3d &ptOnRegion , const AcGeVector3d &vtNormal , const AcGePoint3d &ptOnPlan); AECDLLIMPEXP AcDbEntity* DrawPipe(const AcGePoint3d& ptFrom , const AcGePoint3d& ptTo , const double &dRadius , const double &dThick , const int &nSegs = 20); AECDLLIMPEXP AcDbEntity* DrawPipe(const AcDbCurve* pCurve , const AcDbRegion* pRegion , const AcGePoint3d& ptCenInRgn); AECDLLIMPEXP AcDbEntity* DrawPipe(const AcDbCurve* pCurve , const AcDbPolyline* pRegion , const AcGePoint3d& ptCenInRgn); AECDLLIMPEXP AcDbEntity* DrawPipe(const AcDbCurve* pCurve , const AcDbCurve* pRegion , const AcGePoint3d& ptCenInRgn); AECDLLIMPEXP AcDbEntity* DrawPipe(const AcDbCurve *pCurve, double dR); AECDLLIMPEXP AcDbEntity* DrawCone( const AcGePoint3d &ptPos , const AcGeVector3d &vtMove , const double &Tr , const double &Br , const double &H , const double &xOffset ); AECDLLIMPEXP AcDbEntity* DrawBox(const AcGePoint3d &ptPos , const AcGeVector3d &vtMove , const double &X , const double &Y , const double &Z); AECDLLIMPEXP AcDbEntity* DrawSphere(const AcGePoint3d &ptCenter , const double &dRadius ); AECDLLIMPEXP AcDbEntity* DrawPyramid(const AcGePoint3d &ptPos , const AcGeVector3d &vtMove , const double &Tx , const double &Ty , const double &Bx , const double &By , const double &H , const double &xOffset ); AECDLLIMPEXP AcDbEntity* DrawTydf(const AcGePoint3d &ptPos , const AcGeVector3d &vtMove , const double &Tr , const double &Bx , const double &By , const double &H , const double &xOffset , BOOL bIsTfdy = FALSE); AECDLLIMPEXP AcDbEntity* DrawCylinder(const AcGePoint3d &ptFr , const AcGePoint3d &ptTo , const double &dRadius ); AECDLLIMPEXP AcDbEntity* DrawCirTorus(const AcGePoint3d &ptCenter , const AcGeVector3d &vtNormal , const double &majorRadius // 大半径 , const double &minorRadius // 小半径,大半径减小半径是管子直径 , const double &startAngle , const double &endAngle ); AECDLLIMPEXP AcDbEntity* DrawRectTorus(const AcGePoint3d &ptCenter , const AcGeVector3d &vtNormal , const double &majorRadius // 大半径 , const double &minorRadius // 小半径 , const double &height // 大半径减小半径是正方形的宽,这个参数是高 , const double &startAngle , const double &endAngle ); AECDLLIMPEXP AcDbEntity* DrawDish(const double &dH // 小半径 , const double &dD // 大直径 , const AcGePoint3d &axisPnt , const AcGeVector3d &axisDir ); // 得到一个矩阵,将ptOrig点方向为vtOrig转到ptDirst,方向为vtDist AECDLLIMPEXP AcGeMatrix3d RotateAndMove(const AcGeVector3d &vtOrig , const AcGePoint3d &ptOrig , const AcGeVector3d &vtDist , const AcGePoint3d &ptDist); AECDLLIMPEXP AcDbEntity* DrawLoft(const AcDbRegion *pTop , const AcDbRegion *pBottom , const AcDbCurve *pLine); AECDLLIMPEXP AcDbEntity* DrawLoft(const AcDbCurve *pTop , const AcDbCurve *pBottom , const AcDbCurve *pLine); AECDLLIMPEXP AcDbEntity* DrawRevolve(const AcDbLine& lnAxis , const AcDbRegion *pReg); AECDLLIMPEXP AcDbEntity* DrawRevolve(const AcDbLine& lnAxis , const AcDbCurve *pCurve); AECDLLIMPEXP AcDbEntity* DrawRevolve(const AcDbLine& lnAxis ,const AcGePoint3dArray& arSectionPtrs); AECDLLIMPEXP AcDbEntity* DrawExclude(const AcGePoint3dArray& arSectionPtrs , const AcGeVector3d &vtPath); AECDLLIMPEXP AcDbEntity* DrawExclude(const AcDbCurve *pCurve , const AcGeVector3d &vtPath); AECDLLIMPEXP AcDbEntity* DrawExclude(const AcDbRegion *pReg , const AcGePoint3d &ptInReg , const AcGeVector3d &vtPath); AECDLLIMPEXP AcDbEntity* DrawMesh(const Adesk::UInt32 &rows , const Adesk::UInt32 &columns , const AcGePoint3d *pVertexList , bool bHasSeal = true); }