opencascade - 如何在 OpenCASCADE 上创建浮雕和雕刻文字
问题描述
我正在搜索用于在我的 AIS_Shape 上创建浮雕文本的 API,如果没有更好的 API 可以做到这一点?,我正在考虑创建文本拉伸并使用 AIS_Shape 进行剪切操作,我们可以挤出文本吗?
解决方案
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();
推荐阅读
- python - 如何将模型中的 django DateField 从 YYYY-MM-DD 格式化为 MM/DD/YYYY
- spring - @ControllerAdvice 组件不考虑有序接口
- java - 创建一个列表,显示给定输入 java 的匹配字符串
- c - 菜单驱动程序首先创建“n”个节点的单链表,然后显示该创建的节点并进一步执行其他操作
- php - 如何将内容类型信息从 Burzum/FileStorage 传递到 KnpLabs/Gaufrette
- node.js - webpack-dev-middleware 不为我的客户服务
- sql - 错误 3265 - 记录集中存在字段
- linux - Apache nutch selenium 与 Firefox
- .net - 将 TeeChart(.Net) 导出为 PDF:在导出的 PDF 中未正确呈现 Unicode 字符
- sql - 选择 ID 字段在另一个表中出现的次数