【发布时间】:2021-03-11 16:22:03
【问题描述】:
我正在搜索用于在我的 AIS_Shape 上创建浮雕文本的 API,如果没有更好的 API 方法可以做到这一点?,我正在考虑创建文本拉伸并使用 AIS_Shape 进行剪切操作,我们可以拉伸文本吗?
【问题讨论】:
标签: opencascade
我正在搜索用于在我的 AIS_Shape 上创建浮雕文本的 API,如果没有更好的 API 方法可以做到这一点?,我正在考虑创建文本拉伸并使用 AIS_Shape 进行剪切操作,我们可以拉伸文本吗?
【问题讨论】:
标签: opencascade
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();
【讨论】: