比如我在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标注显示类(独立)相关推荐

  1. IDEA 显示类结构图

    IDEA 显示类结构图 选中类名-右键-Diagrams-Show Diagram 快捷键:Ctrl+Alt+Shift+U 示例代码: import java.io.FileNotFoundExce ...

  2. 后盾网lavarel视频项目---2、phpstorm显示类中的方法快捷键

    后盾网lavarel视频项目---2.phpstorm显示类中的方法快捷键 一.总结 一句话总结: ctrl + f12 1.npm安装js插件? npm install hdjs 2.phpstor ...

  3. java show过时_Java中show() 方法被那个方法代替了? java编程 显示类中信

    你说的show是swing里的吧,在老版本中Component这个超类确实有show这个方法,而且这个方法也相当有用,使一个窗口可见,并放到最前面.在jdk5.0中阻止了这个方法,普遍用setVisi ...

  4. 用php做一个分页显示的,php一个分页显示类

    php一个分页显示类推荐查看本文HTML版本 <?php * 说明: * 1. 配合MYSQL数据库使用 * 2. 类没有提供连接数据库的功能,需在外部建立数据库连接. * */ /* ...

  5. Eclipse窗口显示:独立、嵌入式

    我们以Javadoc为例,下面图中: 图1所示的Javadoc窗口独立于主窗口 图2所示的Javadoc窗口嵌入在主窗口中 图1 Javadoc独立于主窗口 图2 Javadoc嵌入在主窗口 设置窗口 ...

  6. Kinect+OpenNI学习笔记之13(Kinect驱动类,OpenCV显示类和手部预分割类的设计)

    前言 为了减小以后项目的开发效率,本次实验将OpenNI底层驱动Kinect,OpenCV初步处理OpenNI获得的原始数据,以及手势识别中的分割(因为本系统最后是开发手势识别的)这3个部分的功能单独 ...

  7. android 如何从服务器端的数据库中拿数据,在客户端显示类?

    ============问题描述============ android 如何从服务器端的数据库中拿数据,在客户端显示类? ============解决方案1============ 写一个网络访问的 ...

  8. vscode中文备注出现方框标注显示此字符非ascii字符如何取消

    描述:vscode中文备注出现方框标注显示此字符非ascii字符如何取消 步骤: 点击方框-选择禁止显示此字符非ascii字符显示

  9. 百度地图多标注显示以及自定义图标

    ** 百度地图多标注显示以及自定义图标 ** 效果图: HTML部分 <style>*{margin:0px;padding:0px} html{font-size: 100%;} bod ...

  10. CAD图纸中标注显示成问号?

    我在CAD制图的时候有遇到过这种问题,CAD图纸字体显示不全,CAD图纸中标注显示成问号.这一问题非常的棘手,可能导致施工图纸无法进行下去.该如何解决呢? 我们需要排除的是使用的CAD制图软件是否有问 ...

最新文章

  1. 软件工程师的职业生涯
  2. windows主机防护
  3. 【Git】Git 修改刚提交的 commit message
  4. 委托又给我惹麻烦了————记委托链的取消注册、获取返回值
  5. 去除文件头部的u+feff_关于FEFF的简短故事,一个不可见的UTF-8字符破坏了我们的CSV文件
  6. 2005服务器文件夹网页设设置,设置VSS2005使支持通过Internet访问
  7. VC++注册,卸载OCX控件,以及判断是否注册
  8. [转]唐骏谈职场 —— 管理者要学会让员工感动
  9. java开发聚合支付系统源码可支撑百万级并发
  10. Python - 怎么将一个数字拆分成多个随机数字
  11. Hash校验工具、MD5 SHA1 SHA256命令行工具
  12. HEVC视频编码技术概述
  13. Trunk技术需求与应用
  14. 如何快速实现抖音分享与第三方登录?
  15. java模拟京东登陆_模拟登陆京东并访问我的订单
  16. 苹果笔记本安装windows系统,在windows系统中一些快捷键的使用
  17. 顺序消费可没你想的这么简单,队列数量的变更往往无法保证同一个账号的消息发送到同一个分区,怎么解决?
  18. 华为防火墙telnet配置
  19. 2021年安全员-C证(上海市)考试APP及安全员-C证(上海市)新版试题
  20. 百度搜索排名API接口PC返回JSON数据格式

热门文章

  1. php查询mysql表里的数据_PHP连接Mysql数据库读取表格数据
  2. javaweb不同用户登录不同页面的页面_ssh+mysql实现的Java web论坛系统源码附带视频指导运行教程...
  3. cad结构字体_AutoCAD字体选择:如何快速选中gbcbig.shx通用字体
  4. mysql八大知识点_MySQL索引八大法则之上篇
  5. 为了探究不同光照处理_初中化学 | 控制变量法与影响因素的探究
  6. 单片机led数码管显示c语言,各位大神,如何用C语言实现在数码管上实现1234同时亮...
  7. Java从入门到跑路
  8. Prometheus和Grafana监控实践
  9. 小说Symbian的签名
  10. 贝叶斯公式52张牌猜黑桃A策略