OpenCasCade(OCC)7.2版本_实现ColorScale功能

问题描述
采用OCC计算点到曲面的误差,希望采用云图的方式更加直观的显示误差的范围,在参考网络上有关云图的资料发现,之前版本中,V3d_Viewer中自带云图的功能,然而7.2版本中这个功能集成在了AIS_ColorScale中,具体实现过程中参数设置是问题所在,摸索过后,实现了云图的显示功能。

解决方案

//用户输入云图的最大值和最小值
void XXX::makeColorScale(double &maxN, double &minN)//制作显示误差的云图
{
	//AIS_ColorScale系统自带的制作云图的方式
	Handle(AIS_InteractiveContext) myAISContext = GetDocument()->GetIC();//获取上下文的Context
	Handle(AIS_ColorScale) aColorScale = new AIS_ColorScale();//云图制作集成在这个方法中
	//获取界面的长和宽
	CRect cr;
	GetClientRect(&cr);
	ClientToScreen(&cr);
	int cx = GetSystemMetrics(SM_CXFULLSCREEN);
	int cy = GetSystemMetrics(SM_CXFULLSCREEN);
	//设置云图参数,具体参数的含义可以参看OCC自带的用户手册
	aColorScale->SetBreadth((int)(cx*0.06));
	aColorScale->SetHeight((int)(cy*0.3));
	aColorScale->SetMax(maxN);
	aColorScale->SetMin(minN);
	aColorScale->SetNumberOfIntervals(8);
	aColorScale->SetSmoothTransition(Standard_True);
	aColorScale->SetLabelPosition(Aspect_TOCSP_RIGHT);
	//这一步是将云图从X-Y空间 进行转换,很重要
	aColorScale->SetZLayer (Graphic3d_ZLayerId_TopOSD);
	double z = 0.1*cy;
	gp_Pnt thePoint(0.0,0.0,z);
	Graphic3d_Vec2i anoffset(0,Standard_Integer(thePoint.Z()));
	myAISContext->SetTransformPersistence (aColorScale, new Graphic3d_TransformPers (Graphic3d_TMF_2d, Aspect_TOTP_LEFT_LOWER,anoffset));
	//云图显示
	myAISContext->SetDisplayMode(aColorScale,1,Standard_False);
	myAISContext->Display(aColorScale,Standard_False);
}

功能实现
在这里插入图片描述

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值