tpaviot / pythonocc-core

Python package for 3D geometry CAD/BIM/CAM
GNU Lesser General Public License v3.0
1.33k stars 374 forks source link

Problem with boolean operation #88

Closed Achim66 closed 9 years ago

Achim66 commented 9 years ago

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

#k_V = degree_V +1
z = zVal
xFak = xFak_Val
yFak = yFak_Val
array_Pol = TColgp_Array2OfPnt(1, nCP_U,1,nCP_V)
array_Pol.SetValue(1,1, gp_Pnt(0_xFak, 0_yFak, 0))
array_Pol.SetValue(1,2, gp_Pnt(0_xFak, 1_yFak, 0))
array_Pol.SetValue(1,3, gp_Pnt(0_xFak, 2_yFak, 0))
array_Pol.SetValue(1,4, gp_Pnt(0_xFak, 3_yFak, 0))
array_Pol.SetValue(2,1, gp_Pnt(1_xFak, 0_yFak, 0))
array_Pol.SetValue(2,2, gp_Pnt(1_xFak, 1_yFak, z))
array_Pol.SetValue(2,3, gp_Pnt(1_xFak, 2_yFak, z))
array_Pol.SetValue(2,4, gp_Pnt(1_xFak, 3_yFak, 0))
array_Pol.SetValue(3,1, gp_Pnt(2_xFak, 0_yFak, 0))
array_Pol.SetValue(3,2, gp_Pnt(2_xFak, 1_yFak, z))
array_Pol.SetValue(3,3, gp_Pnt(2_xFak, 2_yFak, z))
array_Pol.SetValue(3,4, gp_Pnt(2_xFak, 3_yFak, 0))
array_Pol.SetValue(4,1, gp_Pnt(3_xFak, 0_yFak, 0))
array_Pol.SetValue(4,2, gp_Pnt(3_xFak, 1_yFak, 0))
array_Pol.SetValue(4,3, gp_Pnt(3_xFak, 2_yFak, 0))
array_Pol.SetValue(4,4, gp_Pnt(3_xFak, 3_yFak, 0))
array_Knots_U = TColStd_Array1OfReal(1, 2)
array_Knots_U.SetValue(1, 0.0)
array_Knots_U.SetValue(2, 0.1)
array_Multi_U = TColStd_Array1OfInteger(1,2)
array_Multi_U.SetValue(1,4)
array_Multi_U.SetValue(2,4)
array_Knots_V = TColStd_Array1OfReal(1,2)
array_Knots_V.SetValue(1, 0.0)
array_Knots_V.SetValue(2, 0.1)
array_Multi_V = TColStd_Array1OfInteger(1,2)
array_Multi_V.SetValue(1,4)
array_Multi_V.SetValue(2,4)
return Geom_BSplineSurface(array_Pol,array_Knots_U,array_Knots_V,array_Multi_U,array_Multi_V,degree_U,degree_V,False,False)

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())

#display.DisplayShape(aFuse.Shape())
display.FitAll()
start_display()

Some ideas? Best Regards Achim

jf--- commented 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

Achim66 commented 9 years ago

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

Achim66 commented 9 years ago

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.

tpaviot commented 9 years ago

@Achim66 I ran your code, it runs. Below is what I get, is it what is expected? gh_issue_88

Achim66 commented 9 years ago

@tpaviot Thank you for replying. shapes 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.

Achim66 commented 9 years ago

@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("TestShapeGambit.stp")

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;

1 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION( ' ', ( #10, #11, #12, #13, #14, #15, #16, #17, #18, #19 ), #6 );

2 = PRODUCT_DEFINITION_CONTEXT( '', #20, 'design' );

3 = APPLICATION_PROTOCOL_DEFINITION( 'INTERNATIONAL STANDARD', 'automotive_design', 1994, #20 );

4 = PRODUCT_CATEGORY_RELATIONSHIP( 'NONE', 'NONE', #21, #22 );

5 = SHAPE_DEFINITION_REPRESENTATION( #23, #24 );

6 = ( GEOMETRIC_REPRESENTATION_CONTEXT( 3 )GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT( ( #27 ) )GLOBAL_UNIT_ASSIGNED_CONTEXT( ( #29, #30, #31 ) )REPRESENTATION_CONTEXT( 'NONE', 'WORKSPACE' ) );

10 = STYLED_ITEM( '', ( #33 ), #34 );

11 = STYLED_ITEM( '', ( #35 ), #36 );

12 = STYLED_ITEM( '', ( #37 ), #38 );

13 = STYLED_ITEM( '', ( #39 ), #40 );

14 = STYLED_ITEM( '', ( #41 ), #42 );

15 = STYLED_ITEM( '', ( #43 ), #44 );

16 = STYLED_ITEM( '', ( #45 ), #46 );

17 = STYLED_ITEM( '', ( #47 ), #48 );

18 = STYLED_ITEM( '', ( #49 ), #50 );

19 = STYLED_ITEM( '', ( #51 ), #52 );

20 = APPLICATION_CONTEXT( ' ' );

21 = PRODUCT_CATEGORY( 'part', 'NONE' );

22 = PRODUCT_RELATED_PRODUCT_CATEGORY( 'detail', ' ', ( #53 ) );

23 = PRODUCT_DEFINITION_SHAPE( 'NONE', 'NONE', #54 );

24 = ADVANCED_BREP_SHAPE_REPRESENTATION( 'volume.1', ( #55, #56 ), #6 );

27 = UNCERTAINTY_MEASURE_WITH_UNIT( LENGTH_MEASURE( 1.00000000000000E-06 ), #29, '', '' );

29 = ( CONVERSION_BASED_UNIT( 'MILLIMETRE', #59 )LENGTH_UNIT( )NAMED_UNIT( #62 ) );

30 = ( NAMED_UNIT( #64 )PLANE_ANGLE_UNIT( )SI_UNIT( $, .RADIAN. ) );

31 = ( NAMED_UNIT( #64 )SOLID_ANGLE_UNIT( )SI_UNIT( $, .STERADIAN. ) );

33 = PRESENTATION_STYLE_ASSIGNMENT( ( #70 ) );

34 = EDGE_CURVE( 'edge.2', #42, #52, #71, .T. );

35 = PRESENTATION_STYLE_ASSIGNMENT( ( #72 ) );

36 = ADVANCED_FACE( 'face.1', ( #73 ), #74, .F. );

37 = PRESENTATION_STYLE_ASSIGNMENT( ( #75 ) );

38 = EDGE_CURVE( 'edge.4', #52, #44, #76, .T. );

39 = PRESENTATION_STYLE_ASSIGNMENT( ( #77 ) );

40 = VERTEX_POINT( 'vertex.2', #78 );

41 = PRESENTATION_STYLE_ASSIGNMENT( ( #79 ) );

42 = VERTEX_POINT( 'vertex.1', #80 );

43 = PRESENTATION_STYLE_ASSIGNMENT( ( #81 ) );

44 = VERTEX_POINT( 'vertex.4', #82 );

45 = PRESENTATION_STYLE_ASSIGNMENT( ( #83 ) );

46 = EDGE_CURVE( 'edge.3', #40, #44, #84, .T. );

47 = PRESENTATION_STYLE_ASSIGNMENT( ( #85 ) );

48 = ADVANCED_FACE( 'face.2', ( #86 ), #87, .T. );

49 = PRESENTATION_STYLE_ASSIGNMENT( ( #88 ) );

50 = EDGE_CURVE( 'edge.1', #42, #40, #89, .T. );

51 = PRESENTATION_STYLE_ASSIGNMENT( ( #90 ) );

52 = VERTEX_POINT( 'vertex.3', #91 );

53 = PRODUCT( 'volume.1', 'volume.1', 'PART-volume.1-DESC', ( #92 ) );

54 = PRODUCT_DEFINITION( 'NONE', 'NONE', #93, #2 );

55 = MANIFOLD_SOLID_BREP( 'volume.1', #94 );

56 = AXIS2_PLACEMENT_3D( '', #95, #96, #97 );

59 = LENGTH_MEASURE_WITH_UNIT( LENGTH_MEASURE( 1.00000000000000 ), #98 );

62 = DIMENSIONAL_EXPONENTS( 1.00000000000000, 0.00000000000000, 0.00000000000000, 0.00000000000000, 0.00000000000000, 0.00000000000000, 0.00000000000000 );

64 = DIMENSIONAL_EXPONENTS( 0.00000000000000, 0.00000000000000, 0.00000000000000, 0.00000000000000, 0.00000000000000, 0.00000000000000, 0.00000000000000 );

70 = CURVE_STYLE( '', #99, POSITIVE_LENGTH_MEASURE( 1.00000000000000E-06 ), #100 );

71 = B_SPLINE_CURVE_WITH_KNOTS( '', 3, ( #101, #102, #103, #104 ), .UNSPECIFIED., .F., .F., ( 4, 4 ), ( 0.00000000000000, 0.100000000000000 ), .UNSPECIFIED. );

72 = SURFACE_STYLE_USAGE( .BOTH., #105 );

73 = FACE_OUTER_BOUND( '', #106, .T. );

74 = B_SPLINE_SURFACE_WITH_KNOTS( '', 3, 3, ( ( #107, #108, #109, #110 ), ( #111, #112, #113, #114 ), ( #115, #116, #117, #118 ), ( #119, #120, #121, #122 ) ), .UNSPECIFIED., .F., .F., .F., ( 4, 4 ), ( 4, 4 ), ( 0.00000000000000, 0.100000000000000 ), ( 0.00000000000000, 0.100000000000000 ), .UNSPECIFIED. );

75 = CURVE_STYLE( '', #123, POSITIVE_LENGTH_MEASURE( 1.00000000000000E-06 ), #124 );

76 = B_SPLINE_CURVE_WITH_KNOTS( '', 3, ( #125, #126, #127, #128 ), .UNSPECIFIED., .F., .F., ( 4, 4 ), ( 0.00000000000000, 0.100000000000000 ), .UNSPECIFIED. );

77 = POINT_STYLE( ' ', #129, POSITIVE_LENGTH_MEASURE( 1.00000000000000E-06 ), #130 );

78 = CARTESIAN_POINT( '', ( 3.00000000000000, 0.00000000000000, 0.00000000000000 ) );

79 = POINT_STYLE( ' ', #131, POSITIVE_LENGTH_MEASURE( 1.00000000000000E-06 ), #132 );

80 = CARTESIAN_POINT( '', ( 0.00000000000000, 0.00000000000000, 0.00000000000000 ) );

81 = POINT_STYLE( ' ', #133, POSITIVE_LENGTH_MEASURE( 1.00000000000000E-06 ), #134 );

82 = CARTESIAN_POINT( '', ( 3.00000000000000, 3.00000000000000, 0.00000000000000 ) );

83 = CURVE_STYLE( '', #135, POSITIVE_LENGTH_MEASURE( 1.00000000000000E-06 ), #136 );

84 = B_SPLINE_CURVE_WITH_KNOTS( '', 3, ( #137, #138, #139, #140 ), .UNSPECIFIED., .F., .F., ( 4, 4 ), ( 0.00000000000000, 0.100000000000000 ), .UNSPECIFIED. );

85 = SURFACE_STYLE_USAGE( .BOTH., #141 );

86 = FACE_OUTER_BOUND( '', #142, .T. );

87 = B_SPLINE_SURFACE_WITH_KNOTS( '', 3, 3, ( ( #143, #144, #145, #146 ), ( #147, #148, #149, #150 ), ( #151, #152, #153, #154 ), ( #155, #156, #157, #158 ) ), .UNSPECIFIED., .F., .F., .F., ( 4, 4 ), ( 4, 4 ), ( 0.00000000000000, 0.100000000000000 ), ( 0.00000000000000, 0.100000000000000 ), .UNSPECIFIED. );

88 = CURVE_STYLE( '', #159, POSITIVE_LENGTH_MEASURE( 1.00000000000000E-06 ), #160 );

89 = B_SPLINE_CURVE_WITH_KNOTS( '', 3, ( #161, #162, #163, #164 ), .UNSPECIFIED., .F., .F., ( 4, 4 ), ( 0.00000000000000, 0.100000000000000 ), .UNSPECIFIED. );

90 = POINT_STYLE( ' ', #165, POSITIVE_LENGTH_MEASURE( 1.00000000000000E-06 ), #166 );

91 = CARTESIAN_POINT( '', ( 0.00000000000000, 3.00000000000000, 0.00000000000000 ) );

92 = PRODUCT_CONTEXT( '', #20, 'mechanical' );

93 = PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE( ' ', 'NONE', #53, .NOT_KNOWN. );

94 = CLOSED_SHELL( '', ( #48, #36 ) );

95 = CARTESIAN_POINT( '', ( 0.00000000000000, 0.00000000000000, 0.00000000000000 ) );

96 = DIRECTION( '', ( 0.00000000000000, 0.00000000000000, 1.00000000000000 ) );

97 = DIRECTION( '', ( 1.00000000000000, 0.00000000000000, 0.00000000000000 ) );

98 = ( NAMED_UNIT( #62 )LENGTH_UNIT( )SI_UNIT( .MILLI., .METRE. ) );

99 = DRAUGHTING_PRE_DEFINED_CURVE_FONT( 'continuous' );

100 = COLOUR_RGB( '', 0.500000000000000, 0.500000000000000, 0.500000000000000 );

101 = CARTESIAN_POINT( '', ( 0.00000000000000, 0.00000000000000, 0.00000000000000 ) );

102 = CARTESIAN_POINT( '', ( 0.00000000000000, 1.00000000000000, 0.00000000000000 ) );

103 = CARTESIAN_POINT( '', ( 0.00000000000000, 2.00000000000000, 0.00000000000000 ) );

104 = CARTESIAN_POINT( '', ( 0.00000000000000, 3.00000000000000, 0.00000000000000 ) );

105 = SURFACE_SIDE_STYLE( '', ( #168 ) );

106 = EDGE_LOOP( '', ( #169, #170, #171, #172 ) );

107 = CARTESIAN_POINT( '', ( 0.00000000000000, 0.00000000000000, 0.00000000000000 ) );

108 = CARTESIAN_POINT( '', ( 0.00000000000000, 1.00000000000000, 0.00000000000000 ) );

109 = CARTESIAN_POINT( '', ( 0.00000000000000, 2.00000000000000, 0.00000000000000 ) );

110 = CARTESIAN_POINT( '', ( 0.00000000000000, 3.00000000000000, 0.00000000000000 ) );

111 = CARTESIAN_POINT( '', ( 1.00000000000000, 0.00000000000000, 0.00000000000000 ) );

112 = CARTESIAN_POINT( '', ( 1.00000000000000, 1.00000000000000, -4.00000000000000 ) );

113 = CARTESIAN_POINT( '', ( 1.00000000000000, 2.00000000000000, -4.00000000000000 ) );

114 = CARTESIAN_POINT( '', ( 1.00000000000000, 3.00000000000000, 0.00000000000000 ) );

115 = CARTESIAN_POINT( '', ( 2.00000000000000, 0.00000000000000, 0.00000000000000 ) );

116 = CARTESIAN_POINT( '', ( 2.00000000000000, 1.00000000000000, -4.00000000000000 ) );

117 = CARTESIAN_POINT( '', ( 2.00000000000000, 2.00000000000000, -4.00000000000000 ) );

118 = CARTESIAN_POINT( '', ( 2.00000000000000, 3.00000000000000, 0.00000000000000 ) );

119 = CARTESIAN_POINT( '', ( 3.00000000000000, 0.00000000000000, 0.00000000000000 ) );

120 = CARTESIAN_POINT( '', ( 3.00000000000000, 1.00000000000000, 0.00000000000000 ) );

121 = CARTESIAN_POINT( '', ( 3.00000000000000, 2.00000000000000, 0.00000000000000 ) );

122 = CARTESIAN_POINT( '', ( 3.00000000000000, 3.00000000000000, 0.00000000000000 ) );

123 = DRAUGHTING_PRE_DEFINED_CURVE_FONT( 'continuous' );

124 = COLOUR_RGB( '', 0.500000000000000, 0.500000000000000, 0.500000000000000 );

125 = CARTESIAN_POINT( '', ( 0.00000000000000, 3.00000000000000, 0.00000000000000 ) );

126 = CARTESIAN_POINT( '', ( 1.00000000000000, 3.00000000000000, 0.00000000000000 ) );

127 = CARTESIAN_POINT( '', ( 2.00000000000000, 3.00000000000000, 0.00000000000000 ) );

128 = CARTESIAN_POINT( '', ( 3.00000000000000, 3.00000000000000, 0.00000000000000 ) );

129 = PRE_DEFINED_MARKER( '' );

130 = COLOUR_RGB( '', 0.500000000000000, 0.500000000000000, 0.500000000000000 );

131 = PRE_DEFINED_MARKER( '' );

132 = COLOUR_RGB( '', 0.500000000000000, 0.500000000000000, 0.500000000000000 );

133 = PRE_DEFINED_MARKER( '' );

134 = COLOUR_RGB( '', 0.500000000000000, 0.500000000000000, 0.500000000000000 );

135 = DRAUGHTING_PRE_DEFINED_CURVE_FONT( 'continuous' );

136 = COLOUR_RGB( '', 0.500000000000000, 0.500000000000000, 0.500000000000000 );

137 = CARTESIAN_POINT( '', ( 3.00000000000000, 0.00000000000000, 0.00000000000000 ) );

138 = CARTESIAN_POINT( '', ( 3.00000000000000, 1.00000000000000, 0.00000000000000 ) );

139 = CARTESIAN_POINT( '', ( 3.00000000000000, 2.00000000000000, 0.00000000000000 ) );

140 = CARTESIAN_POINT( '', ( 3.00000000000000, 3.00000000000000, 0.00000000000000 ) );

141 = SURFACE_SIDE_STYLE( '', ( #173 ) );

142 = EDGE_LOOP( '', ( #174, #175, #176, #177 ) );

143 = CARTESIAN_POINT( '', ( 0.00000000000000, 0.00000000000000, 0.00000000000000 ) );

144 = CARTESIAN_POINT( '', ( 0.00000000000000, 1.00000000000000, 0.00000000000000 ) );

145 = CARTESIAN_POINT( '', ( 0.00000000000000, 2.00000000000000, 0.00000000000000 ) );

146 = CARTESIAN_POINT( '', ( 0.00000000000000, 3.00000000000000, 0.00000000000000 ) );

147 = CARTESIAN_POINT( '', ( 1.00000000000000, 0.00000000000000, 0.00000000000000 ) );

148 = CARTESIAN_POINT( '', ( 1.00000000000000, 1.00000000000000, 2.00000000000000 ) );

149 = CARTESIAN_POINT( '', ( 1.00000000000000, 2.00000000000000, 2.00000000000000 ) );

150 = CARTESIAN_POINT( '', ( 1.00000000000000, 3.00000000000000, 0.00000000000000 ) );

151 = CARTESIAN_POINT( '', ( 2.00000000000000, 0.00000000000000, 0.00000000000000 ) );

152 = CARTESIAN_POINT( '', ( 2.00000000000000, 1.00000000000000, 2.00000000000000 ) );

153 = CARTESIAN_POINT( '', ( 2.00000000000000, 2.00000000000000, 2.00000000000000 ) );

154 = CARTESIAN_POINT( '', ( 2.00000000000000, 3.00000000000000, 0.00000000000000 ) );

155 = CARTESIAN_POINT( '', ( 3.00000000000000, 0.00000000000000, 0.00000000000000 ) );

156 = CARTESIAN_POINT( '', ( 3.00000000000000, 1.00000000000000, 0.00000000000000 ) );

157 = CARTESIAN_POINT( '', ( 3.00000000000000, 2.00000000000000, 0.00000000000000 ) );

158 = CARTESIAN_POINT( '', ( 3.00000000000000, 3.00000000000000, 0.00000000000000 ) );

159 = DRAUGHTING_PRE_DEFINED_CURVE_FONT( 'continuous' );

160 = COLOUR_RGB( '', 0.500000000000000, 0.500000000000000, 0.500000000000000 );

161 = CARTESIAN_POINT( '', ( 0.00000000000000, 0.00000000000000, 0.00000000000000 ) );

162 = CARTESIAN_POINT( '', ( 1.00000000000000, 0.00000000000000, 0.00000000000000 ) );

163 = CARTESIAN_POINT( '', ( 2.00000000000000, 0.00000000000000, 0.00000000000000 ) );

164 = CARTESIAN_POINT( '', ( 3.00000000000000, 0.00000000000000, 0.00000000000000 ) );

165 = PRE_DEFINED_MARKER( '' );

166 = COLOUR_RGB( '', 0.500000000000000, 0.500000000000000, 0.500000000000000 );

168 = SURFACE_STYLE_FILL_AREA( #178 );

169 = ORIENTED_EDGE( '', , , #34, .T. );

170 = ORIENTED_EDGE( '', , , #38, .T. );

171 = ORIENTED_EDGE( '', , , #46, .F. );

172 = ORIENTED_EDGE( '', , , #50, .F. );

173 = SURFACE_STYLE_FILL_AREA( #179 );

174 = ORIENTED_EDGE( '', , , #34, .F. );

175 = ORIENTED_EDGE( '', , , #50, .T. );

176 = ORIENTED_EDGE( '', , , #46, .T. );

177 = ORIENTED_EDGE( '', , , #38, .F. );

178 = FILL_AREA_STYLE( '', ( #180 ) );

179 = FILL_AREA_STYLE( '', ( #181 ) );

180 = FILL_AREA_STYLE_COLOUR( '', #182 );

181 = FILL_AREA_STYLE_COLOUR( '', #183 );

182 = COLOUR_RGB( '', 0.500000000000000, 0.500000000000000, 0.500000000000000 );

183 = COLOUR_RGB( '', 0.500000000000000, 0.500000000000000, 0.500000000000000 );

ENDSEC; END-ISO-10303-21;

jf--- commented 9 years ago

@tpaviot , lets close the issue?

jf--- commented 9 years ago

thanks Achim...

monkpit commented 8 years ago

@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 #... :)