Hi,

I'm trying to build a minimal example for my problem. It's about "extruding" 
the open ends of a closed surface normal to its ends. I cannot use the Prism 
function however, because the ends of my closed surface do not lie in a plane. 
The idea is to cycle through the edges of the surface, and use the 
BRepOffsetAPI_MakeThickSolid function to "extrude" the open ends normal to its 
spanned surface, which may be a curved surface.
For test purposes I use a cylinder, open at both ends (even though the ends of 
the cylinder do lie in a plane in this test case).
I've tried to create this cylinder, and "extrude" it with the 
BRepOffsetAPI_MakeThickSolid function. When using the PrismFace as an argument 
to that function, it seems to work fine (see code below). However, I have to 
cycle through the edges of my surface to create that face in the first place, 
and when using the edgeFace created from the wire of the edge, it doesn't seem 
to do anything (see commented line). 
I've noticed that the two edges are equal (see print function), but the wires 
made from them aren't! Is this the source of my problem? Any suggestions on how 
to solve this? Thanks!

Regards,
Balint



import OCC.TopoDS
from OCC.Utils.Topology import Topo
from OCC.TopTools import *
import math

from OCC.Display.SimpleGui import *
display, start_display, add_menu, add_function_to_menu = init_display()

shroudRadius = 3.0
hubRadius = 1.0

radius = 0.2
epsilon = 1.0e-1

## Creating circle and making cylinder (the closed surface):
centerCircle = OCC.gp.gp_Pnt(hubRadius-epsilon, 0, 0.5)
myAX2 = OCC.gp.gp_Ax2(centerCircle,OCC.gp.gp_Dir(1, 0, 0))
circle = OCC.gp.gp_Circ(myAX2, radius)

Edge2 = OCC.BRepBuilderAPI.BRepBuilderAPI_MakeEdge(circle, 0, 
2.0*math.pi).Edge()
ExistingWire = OCC.BRepBuilderAPI.BRepBuilderAPI_MakeWire(Edge2).Wire()
PrismFace = OCC.BRepBuilderAPI.BRepBuilderAPI_MakeFace(ExistingWire).Shape()

length = OCC.gp.gp_Vec(shroudRadius-hubRadius+2.0*epsilon, 0, 0)

bladeSurface = OCC.BRepPrimAPI.BRepPrimAPI_MakePrism(ExistingWire, 
length).Shape()
display.DisplayShape(bladeSurface)
topoBlade = OCC.Utils.Topology.Topo(bladeSurface)
topoBlade.number_of_shells()
bladeFace = topoBlade.faces().next()

## Getting the desired edge from the closed surface:
edges = []
for edge in topoBlade.edges_from_face(bladeFace):
        edge.Reverse()
        edges.append(edge)
        
print Edge2.IsEqual(edges[1])   # These edges are equal!

## Creating wire and face
edgeWire = OCC.BRepBuilderAPI.BRepBuilderAPI_MakeWire(edges[1]).Wire()
# The wires made from the equal edges are not equal, not even same!
print edgeWire.IsSame(ExistingWire)
edgeFace = OCC.BRepBuilderAPI.BRepBuilderAPI_MakeFace(edgeWire).Shape()

shapes = TopTools_ListOfShape()

## Creating the "extruded surface" does work:
thick_solid = OCC.BRepOffsetAPI.BRepOffsetAPI_MakeThickSolid(PrismFace, shapes, 
0.1, 0.01).Shape()

## Doesn't seem to do anything:
#thick_solid = OCC.BRepOffsetAPI.BRepOffsetAPI_MakeThickSolid(edgeFace, shapes, 
0.1, 0.01).Shape()

display.DisplayShape(thick_solid)
start_display()
-- 
Neu: GMX De-Mail - Einfach wie E-Mail, sicher wie ein Brief!  
Jetzt De-Mail-Adresse reservieren: http://portal.gmx.net/de/go/demail

_______________________________________________
Pythonocc-users mailing list
Pythonocc-users@gna.org
https://mail.gna.org/listinfo/pythonocc-users

Reply via email to