马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
#include "stdafx.h"
#include "stdarx.h"
#include "GrUtilities.h"
#include "dbxutil.h"
#include "geassign.h"
void drawInfo(const AcGePoint3d& p1, const AcGePoint3d& p2,short color)
{
ads_point ucsP1,ucsP2;
acdbWcs2Ucs(asDblArray(p1),ucsP1,Adesk::kFalse);
acdbWcs2Ucs(asDblArray(p2),ucsP2,Adesk::kFalse);
acedGrDraw(ucsP1,ucsP2,color,0);
}
void drawInfo(const AcGePoint3d& pWcs,short color)
{
ads_point p,p1,p2,p3,p4;
double size = 5;
acdbWcs2Ucs(asDblArray(pWcs),p,Adesk::kFalse);
struct resbuf rb;
if(acedGetVar("VIEWSIZE",&rb) == RTNORM)
{
size = rb.resval.rreal * 0.05;
}
p1[0] = p[0] - size;
p1[1] = p[1] - size;
p1[2] = p[2];
p2[0] = p[0] + size;
p2[1] = p[1] - size;
p2[2] = p[2];
p3[0] = p[0] + size;
p3[1] = p[1] + size;
p3[2] = p[2];
p4[0] = p[0] - size;
p4[1] = p[1] + size;
p4[2] = p[2];
acedGrDraw(p1,p2,color,0);
acedGrDraw(p2,p3,color,0);
acedGrDraw(p3,p4,color,0);
acedGrDraw(p4,p1,color,0);
}
void drawInfo(const AcGePoint3dArray& ar,short color)
{
AcGePoint3d p,last,first;
first = last = ar[0];
for(int i=1;i<ar.length();i++)
{
p = ar[i];
drawInfo(p,last,color);
last = p;
}
drawInfo(first, last,color);
}
void drawInfo(const AcGeBoundBlock3d& block,short color)
{
ads_point p1,p2,p3,p4,p5,p6,p7,p8;
AcGePoint3d blockP1,blockP2;
AcGePoint3d wcsBlockP1,wcsBlockP2;
block.getMinMaxPoints (wcsBlockP1,wcsBlockP2);
acdbWcs2Ucs(asDblArray(wcsBlockP1),asDblArray(blockP1),Adesk::kFalse);
acdbWcs2Ucs(asDblArray(wcsBlockP2),asDblArray(blockP2),Adesk::kFalse);
p1[0] = blockP1.x;
p1[1] = blockP1.y;
p1[2] = blockP1.z;
p2[0] = blockP2.x;
p2[1] = blockP1.y;
p2[2] = blockP1.z;
p3[0] = blockP2.x;
p3[1] = blockP2.y;
p3[2] = blockP1.z;
p4[0] = blockP1.x;
p4[1] = blockP2.y;
p4[2] = blockP1.z;
p5[0] = blockP1.x;
p5[1] = blockP1.y;
p5[2] = blockP2.z;
p6[0] = blockP2.x;
p6[1] = blockP1.y;
p6[2] = blockP2.z;
p7[0] = blockP2.x;
p7[1] = blockP2.y;
p7[2] = blockP2.z;
p8[0] = blockP1.x;
p8[1] = blockP2.y;
p8[2] = blockP2.z;
acedGrDraw(p1,p2,color,0);
acedGrDraw(p2,p3,color,0);
acedGrDraw(p3,p4,color,0);
acedGrDraw(p4,p1,color,0);
acedGrDraw(p5,p6,color,0);
acedGrDraw(p6,p7,color,0);
acedGrDraw(p7,p8,color,0);
acedGrDraw(p8,p5,color,0);
acedGrDraw(p1,p5,color,0);
acedGrDraw(p2,p6,color,0);
acedGrDraw(p3,p7,color,0);
acedGrDraw(p4,p8,color,0);
}
void drawInfo(const AcGeCurve3d* crv,short color)
{
AcGeInterval iv;
double lb,ub;
crv->getInterval(iv);
iv.getBounds(lb,ub);
double param = lb;
double step = (ub-lb) / 100;
AcGePoint3d p1,p2;
p1 = crv->evalPoint(lb);
acdbWcs2Ucs(asDblArray(p1),asDblArray(p1),Adesk::kFalse);
while(param < ub)
{
param += step;
p2 = crv->evalPoint(param);
acdbWcs2Ucs(asDblArray(p2),asDblArray(p2),Adesk::kFalse);
acedGrDraw(asDblArray(p1),asDblArray(p2),color,0);
p1 = p2;
}
p2 = crv->evalPoint(ub);
acdbWcs2Ucs(asDblArray(p2),asDblArray(p2),Adesk::kFalse);
acedGrDraw(asDblArray(p1),asDblArray(p2),color,0);
}
void drawAxis(const AcGePoint3d& org,const AcGeVector3d& vec, double len, short color)
{
AcGePoint3d p1,p2,p3;
AcGeVector3d vecNormal,vec1,vec2;
vecNormal = vec.normal();
vec1 = vecNormal.perpVector();
vec2 = vecNormal.crossProduct(vec1);
p1 = org;
p2 = p1 + vecNormal*len;
p3 = p2 + vecNormal*len/4;
AcGeCircArc3d cir(p2,vecNormal,len/8);
acdbWcs2Ucs(asDblArray(p1),asDblArray(p1),Adesk::kFalse);
acdbWcs2Ucs(asDblArray(p2),asDblArray(p2),Adesk::kFalse);
acdbWcs2Ucs(asDblArray(p3),asDblArray(p3),Adesk::kFalse);
acedGrDraw(asDblArray(p1),asDblArray(p2),color,0);
// drawInfo(&(cir));
AcGeInterval iv;
double lb,ub;
cir.getInterval(iv);
iv.getBounds(lb,ub);
double param = lb;
double step = (ub-lb) / 100;
p1 = cir.evalPoint(lb);
acdbWcs2Ucs(asDblArray(p1),asDblArray(p1),Adesk::kFalse);
acedGrDraw(asDblArray(p1),asDblArray(p3),color,0);
while(param < ub)
{
param += step;
p2 = cir.evalPoint(param);
acdbWcs2Ucs(asDblArray(p2),asDblArray(p2),Adesk::kFalse);
acedGrDraw(asDblArray(p1),asDblArray(p2),color,0);
acedGrDraw(asDblArray(p2),asDblArray(p3),color,0);
p1 = p2;
}
p2 = cir.evalPoint(ub);
acdbWcs2Ucs(asDblArray(p2),asDblArray(p2),Adesk::kFalse);
acedGrDraw(asDblArray(p1),asDblArray(p2),color,0);
acedGrDraw(asDblArray(p2),asDblArray(p3),color,0);
} |