OpenCasCade标注显示类(独立)
比如我在OCC绘图区画一个点P,然后在点P附近显示部分标注说明,如下图:
上图在指定位置 显示了指示性文字描述,OCC实现过程,一个类实现此功能 ISession_Text 类,在OCC例子程序中可以找到,这里是把它单独分离出来,只依赖OCC标准库文件。
ISession_Text.h:
// ISession_Text.h: interface for the ISession_Text class.
//
//#if !defined(AFX_ISESSION_TEXT_H__A9B277C4_A69E_11D1_8DA4_0800369C8A03__INCLUDED_)
#define AFX_ISESSION_TEXT_H__A9B277C4_A69E_11D1_8DA4_0800369C8A03__INCLUDED_#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000#include <Standard_Macro.hxx>
#include <Standard_DefineHandle.hxx>
#include <TCollection_AsciiString.hxx>
#include <Aspect_TypeOfText.hxx>
#include <Standard_Real.hxx>
#include <Standard_Integer.hxx>
#include <Quantity_Factor.hxx>
#include <Quantity_PlaneAngle.hxx>
#include <PrsMgr_PresentationManager3d.hxx>
#include <SelectMgr_Selection.hxx>
#include <Standard_OStream.hxx>
#include <Standard_IStream.hxx>
#include <Standard_CString.hxx>
#include <SelectMgr_SelectableObject.hxx>
//新增
#include "Prs3d_Text.hxx"
#include <AIS_Shape.hxx>
#include <V3d_Viewer.hxx>class TCollection_AsciiString;
class SelectMgr_Selection;DEFINE_STANDARD_HANDLE(ISession_Text,AIS_InteractiveObject)
class ISession_Text : public AIS_InteractiveObject
{
public:ISession_Text();ISession_Text (const TCollection_AsciiString& aText,const Standard_Real anX = 0 ,const Standard_Real anY = 0 ,const Standard_Real aZ = 0 ,const Aspect_TypeOfText aType = Aspect_TOT_SOLID,const Quantity_PlaneAngle anAngle = 0.0 ,const Standard_Real aSlant = 0.0 ,const Standard_Integer aColorIndex = 1 ,const Standard_Integer aFontIndex = 1 ,const Quantity_Factor aScale = 0.1 );ISession_Text(const TCollection_AsciiString& aText, gp_Pnt& aPoint,const Aspect_TypeOfText aType = Aspect_TOT_SOLID,const Quantity_PlaneAngle anAngle = 0.0 ,const Standard_Real aSlant = 0.0 ,const Standard_Integer aColorIndex = 1 ,const Standard_Integer aFontIndex = 1 ,const Quantity_Factor aScale = 0.1 );virtual ~ISession_Text();inline Standard_Integer NbPossibleSelection() const;
inline TCollection_AsciiString GetText() const;
inline void SetText(const TCollection_AsciiString& atext) ;
inline void GetCoord(Standard_Real& X, Standard_Real& Y, Standard_Real& Z) const ;
inline void SetCoord(const Standard_Real X, const Standard_Real Y, const Standard_Real Z=0);
inline Aspect_TypeOfText GetTypeOfText() const;
inline void SetTypeOfText(const Aspect_TypeOfText aNewTypeOfText) ;
inline Standard_Real GetAngle() const;
inline void SetAngle(const Standard_Real aNewAngle) ;
inline Standard_Real GetSlant() const;
inline void SetSlant(const Standard_Real aNewSlant) ;
inline Standard_Integer GetColorIndex() const;
inline void SetColorIndex(const Standard_Integer aNewColorIndex) ;
inline Standard_Integer GetFontIndex() const;
inline void SetFontIndex(const Standard_Integer aNewFontIndex) ;
inline Quantity_Factor GetScale() const;
inline void SetScale (const Quantity_Factor aNewScale) ;DEFINE_STANDARD_RTTI(ISession_Text)private: void Compute (const Handle(PrsMgr_PresentationManager3d)& aPresentationManager,const Handle(Prs3d_Presentation)& aPresentation,const Standard_Integer aMode);void Compute (const Handle(Prs3d_Projector)& aProjector,const Handle(Prs3d_Presentation)& aPresentation);void ComputeSelection (const Handle(SelectMgr_Selection)& aSelection,const Standard_Integer unMode) ;// Fields PRIVATE//
TCollection_AsciiString MyText ;
Standard_Real MyX ;
Standard_Real MyY ;
Standard_Real MyZ ;
Aspect_TypeOfText MyTypeOfText ;
Standard_Real MyAngle ;
Standard_Real MySlant ;
Standard_Integer MyColorIndex ;
Standard_Integer MyFontIndex ;
Quantity_Factor MyScale ;
Standard_Real MyWidth ;
Standard_Real MyHeight ;};inline Standard_Integer ISession_Text::NbPossibleSelection() const
{ return 1; }inline TCollection_AsciiString ISession_Text::GetText() const
{ return MyText ; }inline void ISession_Text::SetText(const TCollection_AsciiString& atext)
{ MyText = atext; }inline void ISession_Text::GetCoord(Standard_Real& X, Standard_Real& Y, Standard_Real& Z) const
{ X = MyX; Y = MyY; Z = MyZ;}inline void ISession_Text::SetCoord(const Standard_Real X, const Standard_Real Y, const Standard_Real Z)
{ MyX = X ; MyY = Y ; MyZ = Z ;}inline Aspect_TypeOfText ISession_Text::GetTypeOfText() const
{ return MyTypeOfText; }inline void ISession_Text::SetTypeOfText(const Aspect_TypeOfText aNewTypeOfText)
{ MyTypeOfText = aNewTypeOfText; }inline Standard_Real ISession_Text::GetAngle() const
{ return MyAngle; }inline void ISession_Text::SetAngle(const Standard_Real aNewAngle)
{ MyAngle = aNewAngle; }inline Standard_Real ISession_Text::GetSlant() const
{ return MySlant; }inline void ISession_Text::SetSlant(const Standard_Real aNewSlant)
{ MySlant = aNewSlant; }inline Standard_Integer ISession_Text::GetColorIndex() const
{ return MyColorIndex; }inline void ISession_Text::SetColorIndex(const Standard_Integer aNewColorIndex)
{ MyColorIndex = aNewColorIndex; }inline Standard_Integer ISession_Text::GetFontIndex() const
{ return MyFontIndex; }inline void ISession_Text::SetFontIndex(const Standard_Integer aNewFontIndex)
{ MyFontIndex = aNewFontIndex; }inline Quantity_Factor ISession_Text::GetScale() const
{ return MyScale; }inline void ISession_Text::SetScale(const Quantity_Factor aNewScale)
{ MyScale = aNewScale; }#endif // !defined(AFX_ISESSION_TEXT_H__A9B277C4_A69E_11D1_8DA4_0800369C8A03__INCLUDED_)
ISession_Text.cpp:
// ISession_Text.cpp: implementation of the ISession_Text class.
//
//#include "stdafx.h"
#include "ISession_Text.h"#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
//#define new DEBUG_NEW
#endif
IMPLEMENT_STANDARD_HANDLE(ISession_Text,AIS_InteractiveObject)
IMPLEMENT_STANDARD_RTTIEXT(ISession_Text,AIS_InteractiveObject)//
// Construction/Destruction
//ISession_Text::ISession_Text()
{}ISession_Text::ISession_Text(const TCollection_AsciiString& aText, const Standard_Real anX , // = 0const Standard_Real anY , // = 0const Standard_Real aZ , // = 0const Aspect_TypeOfText aType, // = SOLID,const Quantity_PlaneAngle anAngle, // = 0.0const Standard_Real aslant, // = 0.0const Standard_Integer aColorIndex, // = 0const Standard_Integer aFontIndex, // = 1const Quantity_Factor aScale) // = 1:AIS_InteractiveObject(),MyText(aText),MyX(anX),MyY(anY),MyZ(aZ),MyTypeOfText(aType),MyAngle(anAngle),MySlant(aslant),MyFontIndex(aFontIndex),MyColorIndex(aColorIndex),MyScale(aScale),MyWidth(0),MyHeight(0)
{}ISession_Text::ISession_Text(const TCollection_AsciiString& aText, gp_Pnt& aPoint,const Aspect_TypeOfText aType, // = SOLID,const Quantity_PlaneAngle anAngle, // = 0.0const Standard_Real aslant, // = 0.0const Standard_Integer aColorIndex, // = 0const Standard_Integer aFontIndex, // = 1const Quantity_Factor aScale) // = 1:AIS_InteractiveObject(),MyText(aText),MyX(aPoint.X()),MyY(aPoint.Y()),MyZ(aPoint.Z()),MyTypeOfText(aType),MyAngle(anAngle),MySlant(aslant),MyFontIndex(aFontIndex),MyColorIndex(aColorIndex),MyScale(aScale),MyWidth(0),MyHeight(0)
{}ISession_Text::~ISession_Text()
{}void ISession_Text::Compute(const Handle(PrsMgr_PresentationManager3d)& /*aPresentationManager*/,const Handle(Prs3d_Presentation)& aPresentation,const Standard_Integer /*aMode*/)
{Prs3d_Text::Draw(aPresentation,myDrawer,MyText,gp_Pnt( MyX ,MyY,MyZ ));
}void ISession_Text::Compute(const Handle(Prs3d_Projector)& /*aProjector*/,const Handle(Prs3d_Presentation)& /*aPresentation*/) {}void ISession_Text::ComputeSelection(const Handle(SelectMgr_Selection)& /*aSelection*/, const Standard_Integer /*unMode*/)
{
}
简单使用例子:
void OccEditView::DrawPoint(const Standard_Real Xp, const Standard_Real Yp, const Standard_Real Zp)
{gp_Pnt P(Xp,Yp,Zp);Handle(AIS_Point) aPoint = new AIS_Point(new Geom_CartesianPoint(P)); myAISContext->SetColor(aPoint,Quantity_NOC_BLUE3);myAISContext->Display(aPoint); //在实例化类的时候输入需要显示的字符,目前不支持中文Handle(ISession_Text) aGraphicText = new ISession_Text("This a Point!",P.X()+50.,P.Y()+10.,P.Z()+10.,);myAISContext->Display(aGraphicText);
}
OpenCasCade标注显示类(独立)相关推荐
- IDEA 显示类结构图
IDEA 显示类结构图 选中类名-右键-Diagrams-Show Diagram 快捷键:Ctrl+Alt+Shift+U 示例代码: import java.io.FileNotFoundExce ...
- 后盾网lavarel视频项目---2、phpstorm显示类中的方法快捷键
后盾网lavarel视频项目---2.phpstorm显示类中的方法快捷键 一.总结 一句话总结: ctrl + f12 1.npm安装js插件? npm install hdjs 2.phpstor ...
- java show过时_Java中show() 方法被那个方法代替了? java编程 显示类中信
你说的show是swing里的吧,在老版本中Component这个超类确实有show这个方法,而且这个方法也相当有用,使一个窗口可见,并放到最前面.在jdk5.0中阻止了这个方法,普遍用setVisi ...
- 用php做一个分页显示的,php一个分页显示类
php一个分页显示类推荐查看本文HTML版本 <?php * 说明: * 1. 配合MYSQL数据库使用 * 2. 类没有提供连接数据库的功能,需在外部建立数据库连接. * */ /* ...
- Eclipse窗口显示:独立、嵌入式
我们以Javadoc为例,下面图中: 图1所示的Javadoc窗口独立于主窗口 图2所示的Javadoc窗口嵌入在主窗口中 图1 Javadoc独立于主窗口 图2 Javadoc嵌入在主窗口 设置窗口 ...
- Kinect+OpenNI学习笔记之13(Kinect驱动类,OpenCV显示类和手部预分割类的设计)
前言 为了减小以后项目的开发效率,本次实验将OpenNI底层驱动Kinect,OpenCV初步处理OpenNI获得的原始数据,以及手势识别中的分割(因为本系统最后是开发手势识别的)这3个部分的功能单独 ...
- android 如何从服务器端的数据库中拿数据,在客户端显示类?
============问题描述============ android 如何从服务器端的数据库中拿数据,在客户端显示类? ============解决方案1============ 写一个网络访问的 ...
- vscode中文备注出现方框标注显示此字符非ascii字符如何取消
描述:vscode中文备注出现方框标注显示此字符非ascii字符如何取消 步骤: 点击方框-选择禁止显示此字符非ascii字符显示
- 百度地图多标注显示以及自定义图标
** 百度地图多标注显示以及自定义图标 ** 效果图: HTML部分 <style>*{margin:0px;padding:0px} html{font-size: 100%;} bod ...
- CAD图纸中标注显示成问号?
我在CAD制图的时候有遇到过这种问题,CAD图纸字体显示不全,CAD图纸中标注显示成问号.这一问题非常的棘手,可能导致施工图纸无法进行下去.该如何解决呢? 我们需要排除的是使用的CAD制图软件是否有问 ...
最新文章
- 软件工程师的职业生涯
- windows主机防护
- 【Git】Git 修改刚提交的 commit message
- 委托又给我惹麻烦了————记委托链的取消注册、获取返回值
- 去除文件头部的u+feff_关于FEFF的简短故事,一个不可见的UTF-8字符破坏了我们的CSV文件
- 2005服务器文件夹网页设设置,设置VSS2005使支持通过Internet访问
- VC++注册,卸载OCX控件,以及判断是否注册
- [转]唐骏谈职场 —— 管理者要学会让员工感动
- java开发聚合支付系统源码可支撑百万级并发
- Python - 怎么将一个数字拆分成多个随机数字
- Hash校验工具、MD5 SHA1 SHA256命令行工具
- HEVC视频编码技术概述
- Trunk技术需求与应用
- 如何快速实现抖音分享与第三方登录?
- java模拟京东登陆_模拟登陆京东并访问我的订单
- 苹果笔记本安装windows系统,在windows系统中一些快捷键的使用
- 顺序消费可没你想的这么简单,队列数量的变更往往无法保证同一个账号的消息发送到同一个分区,怎么解决?
- 华为防火墙telnet配置
- 2021年安全员-C证(上海市)考试APP及安全员-C证(上海市)新版试题
- 百度搜索排名API接口PC返回JSON数据格式
热门文章
- php查询mysql表里的数据_PHP连接Mysql数据库读取表格数据
- javaweb不同用户登录不同页面的页面_ssh+mysql实现的Java web论坛系统源码附带视频指导运行教程...
- cad结构字体_AutoCAD字体选择:如何快速选中gbcbig.shx通用字体
- mysql八大知识点_MySQL索引八大法则之上篇
- 为了探究不同光照处理_初中化学 | 控制变量法与影响因素的探究
- 单片机led数码管显示c语言,各位大神,如何用C语言实现在数码管上实现1234同时亮...
- Java从入门到跑路
- Prometheus和Grafana监控实践
- 小说Symbian的签名
- 贝叶斯公式52张牌猜黑桃A策略