【问题标题】:How to Create Emboss and engrave text on OpenCASCADE如何在 OpenCASCADE 上创建浮雕和雕刻文字
【发布时间】:2021-03-11 16:22:03
【问题描述】:

我正在搜索用于在我的 AIS_Shape 上创建浮雕文本的 API,如果没有更好的 API 方法可以做到这一点?,我正在考虑创建文本拉伸并使用 AIS_Shape 进行剪切操作,我们可以拉伸文本吗?

【问题讨论】:

    标签: opencascade


    【解决方案1】:

    OCCT 不提供定义浮雕文本的直接工具 - 所以你是对的,你必须使用一般的布尔运算来做到这一点。

    可以在 Draw Harness 随附的标准示例中找到一般概念 - 看看“建模”->“OCCT 教程瓶示例”示例 (source $env(CSF_OCCTSamplesPath)/tcl/bottle.tcl):

    使用工具:

    • Font_BRepFont 加载字体并将字形转换为平面 TopoDS_Shape
    • Font_BRepTextBuilder 使用 Font_BRepFont 格式化文本。
    • BRepPrimAPI_MakePrism 从文本中定义实体。
    • BRepAlgoAPI_Cut 在纯文本和其他形状之间执行布尔运算。

    这是一个伪代码:

      // text2brep
      const double aFontHeight = 20.0;
      Font_BRepFont aFont (Font_NOF_SANS_SERIF, Font_FontAspect_Bold, aFontHeight);
      Font_BRepTextBuilder aBuilder;
      TopoDS_Shape aTextShape2d = aBuilder.Perform (aFont, "OpenCASCADE");
    
      // prism
      const double anExtrusion = 5.0;
      BRepPrimAPI_MakePrism aPrismTool (aTextShape2d, gp_Vec (0,0,1) * anExtrusion);
      TopoDS_Shape aTextShape3d = aPrismTool->Shape();
      //aTextShape3d.SetLocation(); // move where needed
    
      // bopcut
      TopoDS_Shape theMainShape; // defined elsewhere
      BRepAlgoAPI_Cut aCutTool (theMainShape, aTextShape3d);
      if (!aCutTool.IsDone()) { error }
      TopoDS_Shape aResult = aCutTool.Shape();
    

    【讨论】:

      猜你喜欢
      • 2012-11-17
      • 2012-05-04
      • 1970-01-01
      • 2015-08-22
      • 2016-09-30
      • 2013-03-17
      • 1970-01-01
      • 2016-01-13
      • 1970-01-01
      相关资源
      最近更新 更多