⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 grutilities.cpp

📁 能在MDT5/6环境下对已经存在地曲面进行全部和局部区域展开
💻 CPP
字号:
#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);

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -