Closed Achim66 closed 9 years ago
hi Achim,
Just glancing your code, I think you might forgot to call aCut.Perform() ? A pattern is also to check the .IsDone method
Hello, I exported the solid made out of the BSplineSurfaces as step-file, imported it in GAMBIT (GAMBIT is a former modelling and meshing tool of FLUENT respectivley ANSYS, ACIS-Kernel version 16), exported it there as step-file again and reimported it in pythonocc. In pythonocc i made the cut with the cylinder ... and it worked. So I think this problem should be solved by OpenCascade team - in my opinion. Best regards Achim
Hi Jell, thank you for replying. the Perform method doesn*t exist.
aCut.Perform() AttributeError: 'BRepAlgoAPI_Cut' object has no attribute 'Perform'
the IsDone() Method results in True.
@Achim66 I ran your code, it runs. Below is what I get, is it what is expected?
@tpaviot Thank you for replying. I want to substract the cylinder from the other shape. So there should be a hole inside the shape made out of two bspline surfaces. It worked by exporting the bspline shape as step file, importing it in GAMBIT, exporting it again as step file, importing it in pythonocc and then perform the cut operation.
@tpaviot Thomas, I repeated the steps as i wrote before. I imported the pythonocc step file and then made the cut. And I imported the GAMBIT step file and made the cut. Two different results:
Here is the code for export and import:
from OCC.STEPControl import * my_step_exporter = STEPControl_Writer() my_step_exporter.Transfer(aSolid.Shape(),STEPControl_AsIs) my_step_exporter.Write("TestShape.stp") step_reader = STEPControl_Reader()
step_reader.ReadFile("TestShape.stp") step_reader.TransferRoot(1) anImportedShape = step_reader.Shape(1) aCut1 = BRepAlgoAPI_Cut(anImportedShape,aCylinder.Shape()) display.DisplayShape(aCut1.Shape())
here is the GAMBIT step file:
ISO-10303-21; HEADER; FILE_DESCRIPTION( ( 'STEP AP214' ), '1' ); FILE_NAME( '/home/achim/TestShapeGambit.stp', ' ', ( ' ' ), ( ' ' ), 'XStep 1.0', ' ', ' ' ); FILE_SCHEMA( ( 'automotive_design' ) ); ENDSEC; DATA;
ENDSEC; END-ISO-10303-21;
@tpaviot , lets close the issue?
thanks Achim...
@Achim66 just FYI you should probably edit this comment to use code formatting, otherwise on github it looks like you're referencing every issue and pull request with #... :)
Hello, I'm just working with BSplineSurfaces, solids and boolean operations. In the following example the BRepAlgoAPI_Cut and BRepAlgoAPI_Common functions don't work. The BRepAlgoAPI_Fuse function is working.
from OCC.gp import from OCC.TColgp import from OCC.TColStd import from OCC.Geom import from OCC.GeomFill import from OCC.BRepBuilderAPI import from OCC.BRepFill import from OCC.GC import from OCC.TopoDS import from OCC.BRep import from OCC.BRepPrimAPI import from OCC.BRepAlgoAPI import
from OCC.Display.SimpleGui import init_display display, start_display, add_menu, add_function_to_menu = init_display() display.DisableAntiAliasing() def bsplineSurface(zVal,xFak_Val,yFak_Val): nCP_U = 4 nCP_V = 4 degree_U = 3 degree_V = 3
k_U = degree_U +1
if name == 'main': aTol = 1e-06 aSurface =bsplineSurface(2,1,1) aFace = BRepBuilderAPI_MakeFace(aSurface.GetHandle(),aTol) aSurface1 = bsplineSurface(-4,1,1) aFace1 = BRepBuilderAPI_MakeFace(aSurface1.GetHandle(),aTol) aBuilder = BRep_Builder() aShell = TopoDS_Shell() aBuilder.MakeShell(aShell) aBuilder.Add(aShell,aFace.Shape()) aBuilder.Add(aShell,aFace1.Shape()) aSolid = BRepBuilderAPI_MakeSolid(aShell) anOrigin = gp_Pnt(1.5,1.5,-5) aDir = gp_Dir(gp_XYZ(0,0,1)) anAxis = gp_Ax2(anOrigin,aDir) aRadius = 0.5 aHeight = 10 aCylinder = BRepPrimAPI_MakeCylinder(anAxis,aRadius,aHeight) aCut = BRepAlgoAPI_Cut(aSolid.Shape(),aCylinder.Shape()) aCommon = BRepAlgoAPI_Common(aSolid.Shape(),aCylinder.Shape()) aFuse = BRepAlgoAPI_Fuse(aSolid.Shape(),aCylinder.Shape()) display.DisplayShape(aCut.Shape())
display.DisplayShape(aCommon.Shape())
Some ideas? Best Regards Achim