View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0032855 | Community | OCCT:Modeling Algorithms | public | 2022-02-24 11:48 | 2023-08-01 15:08 |
| Reporter | ydk001001 | Assigned To | |||
| Priority | normal | Severity | minor | ||
| Status | assigned | Resolution | open | ||
| Platform | Windows | OS | VC++ 2015 | ||
| Product Version | 7.4.0 | ||||
| Target Version | Unscheduled | ||||
| Summary | 0032855: BRepOffsetAPI_MakeThickSolid - some characters cannot be hollowed out | ||||
| Description | BRepOffsetAPI_MakeThickSolid----- Some characters can be hollowed out, but some can't ,help python_OCC Thank you for checking. I consulted a lot of people, but I couldn't solve it. I'm confused. | ||||
| Steps To Reproduce | BRepOffsetAPI_MakeThickSolid----- Some characters can be hollowed out, but some can't ,help python_OCC
from OCC.Core.Addons import text_to_brep, Font_FontAspect_Bold, Font_FA_Regular
from OCC.Core.BRepAdaptor import BRepAdaptor_Surface
from OCC.Core.TopExp import TopExp_Explorer
from OCC.Core.TopAbs import TopAbs_VERTEX, TopAbs_EDGE, TopAbs_FACE
from OCC.Core.GeomAbs import GeomAbs_Plane
from OCC.Display.backend import load_backend
from OCC.Core.TopTools import TopTools_ListOfShape
from OCC.Core.BRepOffsetAPI import BRepOffsetAPI_MakeThickSolid #maketicksolidbysimple
from OCC.Display.OCCViewer import rgb_color
load_backend('qt-pyqt5')
from OCC.Core.gp import (gp_Pnt, gp_OX,gp_OY, gp_Vec, gp_Trsf, gp_DZ, gp_Ax2, gp_Ax3,
gp_Pnt2d, gp_Dir2d, gp_Ax2d, gp_Pln)
from OCC.Core.TopoDS import topods, TopoDS_Compound, TopoDS_Face
from OCC.Core.BRepPrimAPI import BRepPrimAPI_MakePrism, BRepPrimAPI_MakeCylinder,BRepPrimAPI_MakeBox
from OCC.Core.BRepBuilderAPI import BRepBuilderAPI_MakeFace, BRepBuilderAPI_Transform
from OCC.Core.BRep import BRep_Tool_Surface, BRep_Builder
from OCC.Core.Geom import Geom_Plane, Geom_CylindricalSurface
from OCC.Core.ShapeFix import ShapeFix_Shape,ShapeFix_Wireframe
def build_zi_Shapefix():
zi_hou = 10
zihao = 30
txt_Str = 'U' #不可以DEFHIJKLMNT QUVWXYZ ,可以:0 ,ABCIQOPRSU
txt_Str = 'H' # 不可以DEFHIJKLMNT QUVWXYZ ,可以:0 ,ABCIQOPRSU
txt_Font = 'Arial'
aPrismVec = gp_Vec(0, 0, zi_hou) # Vec face
# D_Shape_Zi = text_to_brep(txt_Str, txt_Font, Font_FA_Regular, zihao, True) #全部失败 #复合曲线是
D_Shape_Zi = text_to_brep(txt_Str, txt_Font, Font_FA_Regular, zihao, False) # 部分成功 复合曲线否fisCompositeCurve (bool)
shape= BRepPrimAPI_MakePrism(D_Shape_Zi, aPrismVec).Shape() # 形成字符模板TopoDS_Shape
# display.DisplayShape(shape, update=True, color=rgb_color(0.5, 0.5, 0)) # 显示图 蓝
def face_is_plane1(face):
# 如果是平面,则返回True
hs = BRep_Tool_Surface(face)
downcast_result = Geom_Plane.DownCast(hs)
if downcast_result is None:
return False
else:
return True
def surface_plane_from_face(aFace):
"""
Returns the geometric plane entity from a planar surface
"""
return Geom_Plane.DownCast(BRep_Tool_Surface(aFace))
def scoop(shape, thickness):
faceToRemove = None
zMax = 1
aFaceExplorer = TopExp_Explorer(shape, TopAbs_FACE)
while aFaceExplorer.More():
aFace = topods.Face(aFaceExplorer.Current())
if face_is_plane1(aFace):
aPlane = surface_plane_from_face(aFace)
aPnt = aPlane.Location()
aZ = aPnt.Z()
# aZ = aPnt.Y()
if aZ > zMax:# aZ < zMax---他砍掉了侧面:
zMax = aZ
faceToRemove = aFace
aFaceExplorer.Next()
facesToRemove = TopTools_ListOfShape()
facesToRemove.Append(faceToRemove)
shapeFixer = ShapeFix_Shape()
shapeFixer.Init(shape)
shapeFixer.SetPrecision(1) # 精度
shapeFixer.MaxTolerance() # 最大允许公差 Prec# 1e-4
shapeFixer.Perform()
shape = shapeFixer.Shape()
# display.DisplayShape(shape, update=True) # 显示图 蓝
# 第一个参数是shape,第二个是要删除的面的集合,第三个是变化后的厚度,第四个是偏差
scoopShape = BRepOffsetAPI_MakeThickSolid(shape, facesToRemove, thickness, 0.001)
# 1 S(TopoDS_Shape &) –
# 2 ClosingFaces(TopTools_ListOfShape &) –
# 3 Offset(float) –
# 4 Tol(float) –
# 5 Mode(BRepOffset_Mode) – default
# 6 value is BRepOffset_Skin
# 7 Intersection(bool) – default
# 8 value is Standard_False
# 9 SelfInter(bool) – default
# 10 value is Standard_False
# 11 Join(GeomAbs_JoinType) – default
# 12 value is GeomAbs_Arc
# BRepBuilderAPI.BRepBuilderAPI_MakeShape_Shape
# step_writer.SetTolerance(1e-4)
return scoopShape
#挖空
shape=scoop(shape, 1).Shape()
# shapeFixer1 = ShapeFix_Shape()
# shapeFixer1.Init(shape)
# shapeFixer1.SetPrecision(1e-04) # 精度
# shapeFixer1.MaxTolerance() # 最大允许公差 Prec#
# shapeFixer1.Perform()
# shape = shapeFixer1.Shape()
# ShapeFix_FixSmallSolid_1=ShapeFix_Solid(shape)
# ShapeFix_FixSmallSolid_1.Init(shape)
# ShapeFix_FixSmallSolid_1.SetPrecision(1e-04) # 精度
# ShapeFix_FixSmallSolid_1.MaxTolerance() # 最大允许公差 Prec#
# ShapeFix_FixSmallSolid_1.Perform()
# shape = ShapeFix_FixSmallSolid_1.FixShape()
display.DisplayShape(shape, update=True, color=rgb_color(1, 1, 0.1)) # 显示图 蓝
if __name__ == "__main__":
from OCC.Display.SimpleGui import init_display
display, start_display, add_menu, add_function_to_menu = init_display()
display.display_triedron() # 坐標顯示
display.set_bg_gradient_color([206, 215, 222], [0, 128, 0]) # 设置背景渐变色
add_menu('管件字挖空管理')
add_function_to_menu('管件字挖空管理',build_zi_Shapefix)
start_display()
DRAW reproducer: text2brep tu "U" -font font=Arial prism pu tu 0 0 10 explode pu F offsetshape ru pu 1.0 0.001 pu_19 # OK. Offset performed successfully. text2brep th "H" -font font=Arial prism ph th 0 0 10 explode ph F offsetshape rh ph 1.0 0.001 ph_14 # ERROR. offsetperform operation not done. | ||||
| Tags | No tags attached. | ||||
| Test case number | |||||
|
|
|
|
|
|
I can't reproduce the problem with symbols "U" and "H" - could you please provide your screenshots?pload MODELING VISUALIZATION set zi_hou 10 set zihao 30 #set txt_Str "U" set txt_Str "H" set txt_Font "Arial" text2brep t "$txt_Str" -font "$txt_Font" -height $zihao prism p t 0.0 0.0 $zi_hou vinit View1 vdisplay p -dispMode 1 vfit image.png (9,911 bytes) |
|
|
OK, I see that the question is about `BRepOffsetAPI_MakeThickSolid` class. Cannot find any Draw Harness command using this builder. |
|
|
I confirm the issue in BRepOffsetAPI_MakeThickSolid. Here is DRAW script to reproduce the problem:text2brep tu "U" -font font=Arial prism pu tu 0 0 10 explode pu F offsetshape ru pu 1.0 0.001 pu_19 # OK. Offset performed successfully. text2brep th "H" -font font=Arial prism ph th 0 0 10 explode ph F offsetshape rh ph 1.0 0.001 ph_14 # ERROR. offsetperform operation not done. We will investigate the root of the problem. |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2022-02-24 11:48 | ydk001001 | New Issue | |
| 2022-02-24 11:48 | ydk001001 | Assigned To | => a3an |
| 2022-02-24 11:48 | ydk001001 | File Added: bulid_zi_wakongtest.zip | |
| 2022-02-24 20:20 | kgv | Note Added: 0107058 | |
| 2022-02-24 20:20 | kgv | File Added: image.png | |
| 2022-02-24 20:20 | kgv | Assigned To | a3an => ydk001001 |
| 2022-02-24 20:21 | kgv | Status | new => feedback |
| 2022-02-24 20:22 | kgv | Category | OCCT:Coding => OCCT:Modeling Algorithms |
| 2022-02-24 20:22 | kgv | Description Updated | |
| 2022-02-24 20:22 | kgv | Steps to Reproduce Updated | |
| 2022-02-24 20:24 | kgv | Note Added: 0107059 | |
| 2022-02-24 20:25 | kgv | Status | feedback => assigned |
| 2022-02-24 20:25 | kgv | Target Version | => 7.7.0 |
| 2022-02-24 20:25 | kgv | Summary | BRepOffsetAPI_MakeThickSolid----- Some characters can be hollowed out, but some can't ,help python_OCC => BRepOffsetAPI_MakeThickSolid - some characters cannot be hollowed out |
| 2022-02-24 20:25 | kgv | Assigned To | ydk001001 => azv |
| 2022-02-24 20:25 | kgv | Steps to Reproduce Updated | |
| 2022-02-24 22:40 |
|
Note Added: 0107060 | |
| 2022-02-24 22:40 |
|
Steps to Reproduce Updated | |
| 2022-05-20 15:03 |
|
Severity | just a question => minor |
| 2022-10-24 10:41 |
|
Target Version | 7.7.0 => 7.8.0 |
| 2023-08-01 15:08 | dpasukhi | Target Version | 7.8.0 => Unscheduled |