View Issue Details

IDProjectCategoryView StatusLast Update
0002348PartDesignBugpublic2016-01-21 15:54
ReporterAlmisuifre Assigned Tojmaustpc  
PriorityhighSeveritymajorReproducibilityalways
Status closedResolutionno change required 
PlatformLinuxOSUbuntuOS Version12.04.5 LTS
Product Version0.15 
Summary0002348: Boolean operation performed partially
DescriptionIn the example provided. Applying a difference between two shapes that are semicircular. It means much the image is missing holes.
Steps To Reproduce1 / Make form
2 / Apply the revolution of 180 °
3 / Create a new sketch with a form
4 / Repeat the form of 180 ° with the polar array tool
5 / Do Boolean operation
Additional Information>>> App.newDocument("Sans nom")
>>> App.setActiveDocument("Sans_nom")
>>> App.ActiveDocument=App.getDocument("Sans_nom")
>>> Gui.ActiveDocument=Gui.getDocument("Sans_nom")
>>> App.activeDocument().addObject('Sketcher::SketchObject','Sketch')
>>> App.activeDocument().Sketch.Placement = App.Placement(App.Vector(0.000000,0.000000,0.000000),App.Rotation(-0.707107,0.000000,0.000000,-0.707107))
>>> Gui.activeDocument().activeView().setCamera('#Inventor V2.1 ascii \n OrthographicCamera {\n viewportMapping ADJUST_CAMERA\n position 0 -87 0 \n orientation -1 0 0 4.712389\n nearDistance -112.88701\n farDistance 287.28702\n aspectRatio 1\n focalDistance 87\n height 143.52005\n\n}')
>>> Gui.activeDocument().setEdit('Sketch')
>>> geoList = []
>>> geoList.append(Part.ArcOfCircle(Part.Circle(App.Vector(27.974504,26.898743,0),App.Vector(0,0,1),9.439571),1.570796,-1.570796))
>>> geoList.append(Part.ArcOfCircle(Part.Circle(App.Vector(57.641731,26.898743,0),App.Vector(0,0,1),9.439571),-1.570796,1.570796))
>>> geoList.append(Part.Line(App.Vector(27.974504,17.459171,0),App.Vector(57.641731,17.459171,0)))
>>> geoList.append(Part.Line(App.Vector(27.974504,36.338314,0),App.Vector(57.641731,36.338314,0)))
>>> App.ActiveDocument.Sketch.addGeometry(geoList,False)
>>> conList = []
>>> conList.append(Sketcher.Constraint('Tangent',0,1,3,1))
>>> conList.append(Sketcher.Constraint('Tangent',0,2,2,1))
>>> conList.append(Sketcher.Constraint('Tangent',2,2,1,1))
>>> conList.append(Sketcher.Constraint('Tangent',3,2,1,2))
>>> conList.append(Sketcher.Constraint('Horizontal',2))
>>> conList.append(Sketcher.Constraint('Equal',0,1))
>>> App.ActiveDocument.Sketch.addConstraint(conList)
>>>
>>> App.ActiveDocument.recompute()
>>> App.ActiveDocument.Sketch.addConstraint(Sketcher.Constraint('PointOnObject',0,3,-1))
>>> App.ActiveDocument.Sketch.movePoint(0,0,App.Vector(8.324779,3.010845,0),0)
>>> App.ActiveDocument.recompute()
>>> App.ActiveDocument.Sketch.movePoint(3,0,App.Vector(32.556896,0.577930,0),1)
>>> App.ActiveDocument.recompute()
>>> App.ActiveDocument.Sketch.addConstraint(Sketcher.Constraint('Radius',0,9.916572))
>>> App.ActiveDocument.Sketch.setDatum(7,App.Units.Quantity('5.000000 mm'))
>>> App.ActiveDocument.recompute()
>>> App.ActiveDocument.Sketch.addConstraint(Sketcher.Constraint('DistanceX',0,3,1,3,40.010269))
>>> App.ActiveDocument.Sketch.setDatum(8,App.Units.Quantity('20.000000 mm'))
>>> App.ActiveDocument.recompute()
>>> App.ActiveDocument.recompute()
>>> App.ActiveDocument.Sketch.addConstraint(Sketcher.Constraint('DistanceX',0,3,64.643451))
>>> App.ActiveDocument.Sketch.setDatum(9,App.Units.Quantity('30.000000 mm'))
>>> App.ActiveDocument.recompute()
>>> App.ActiveDocument.recompute()
>>> Gui.getDocument('Sans_nom').resetEdit()
>>> App.getDocument('Sans_nom').recompute()
>>> App.activeDocument().addObject("PartDesign::Revolution","Revolution")
>>> App.activeDocument().Revolution.Sketch = App.activeDocument().Sketch
>>> App.activeDocument().Revolution.ReferenceAxis = (App.activeDocument().Sketch,['V_Axis'])
>>> App.activeDocument().Revolution.Angle = 360.0
>>> App.activeDocument().Revolution.Reversed = 1
>>> App.ActiveDocument.recompute()
>>> Gui.activeDocument().hide("Sketch")
>>> Gui.activeDocument().setEdit('Revolution')
>>> App.ActiveDocument.Revolution.Angle = 180.000000
>>> App.ActiveDocument.Revolution.ReferenceAxis = (App.ActiveDocument.Sketch,['V_Axis'])
>>> App.ActiveDocument.Revolution.Midplane = 0
>>> App.ActiveDocument.Revolution.Reversed = 1
>>> App.ActiveDocument.recompute()
>>> Gui.activeDocument().hide("Sketch")
>>> Gui.activeDocument().resetEdit()
>>> App.activeDocument().addObject('Sketcher::SketchObject','Sketch001')
>>> App.activeDocument().Sketch001.Support = (App.ActiveDocument.Revolution,["Face4"])
>>> App.activeDocument().recompute()
>>> Gui.activeDocument().setEdit('Sketch001')
>>> geoList = []
>>> geoList.append(Part.ArcOfCircle(Part.Circle(App.Vector(34.643707,5.376991,0),App.Vector(0,0,1),1.268705),1.570796,-1.570796))
>>> geoList.append(Part.ArcOfCircle(Part.Circle(App.Vector(42.678844,5.376991,0),App.Vector(0,0,1),1.268705),-1.570796,1.570796))
>>> geoList.append(Part.Line(App.Vector(34.643707,4.108286,0),App.Vector(42.678844,4.108286,0)))
>>> geoList.append(Part.Line(App.Vector(34.643707,6.645697,0),App.Vector(42.678844,6.645697,0)))
>>> App.ActiveDocument.Sketch001.addGeometry(geoList,False)
>>> conList = []
>>> conList.append(Sketcher.Constraint('Tangent',0,1,3,1))
>>> conList.append(Sketcher.Constraint('Tangent',0,2,2,1))
>>> conList.append(Sketcher.Constraint('Tangent',2,2,1,1))
>>> conList.append(Sketcher.Constraint('Tangent',3,2,1,2))
>>> conList.append(Sketcher.Constraint('Horizontal',2))
>>> conList.append(Sketcher.Constraint('Equal',0,1))
>>> App.ActiveDocument.Sketch001.addConstraint(conList)
>>>
>>> App.ActiveDocument.recompute()
>>> App.ActiveDocument.Sketch001.addConstraint(Sketcher.Constraint('PointOnObject',0,3,-1))
>>> App.ActiveDocument.Sketch001.movePoint(1,0,App.Vector(45.556278,0.615919,0),0)
>>> App.ActiveDocument.recompute()
>>> App.ActiveDocument.Sketch001.addConstraint(Sketcher.Constraint('Radius',1,2.963252))
>>> App.ActiveDocument.Sketch001.setDatum(7,App.Units.Quantity('3.000000 mm'))
>>> App.ActiveDocument.recompute()
>>> App.ActiveDocument.Sketch001.movePoint(1,3,App.Vector(46.933941,0.000000,0),0)
>>> App.ActiveDocument.recompute()
>>> App.ActiveDocument.Sketch001.movePoint(0,3,App.Vector(33.109829,-0.239180,0),0)
>>> App.ActiveDocument.recompute()
>>> App.ActiveDocument.Sketch001.addConstraint(Sketcher.Constraint('DistanceX',0,3,33.109829))
>>> App.ActiveDocument.Sketch001.setDatum(8,App.Units.Quantity('33.000000 mm'))
>>> App.ActiveDocument.recompute()
>>> App.ActiveDocument.recompute()
>>> App.ActiveDocument.Sketch001.addConstraint(Sketcher.Constraint('DistanceX',0,3,1,3,13.933941))
>>> App.ActiveDocument.Sketch001.setDatum(9,App.Units.Quantity('14.000000 mm'))
>>> App.ActiveDocument.recompute()
>>> App.ActiveDocument.recompute()
>>> Gui.getDocument('Sans_nom').resetEdit()
>>> App.getDocument('Sans_nom').recompute()
>>> App.activeDocument().addObject("PartDesign::Pocket","Pocket")
>>> App.activeDocument().Pocket.Sketch = App.activeDocument().Sketch001
>>> App.activeDocument().Pocket.Length = 5.0
>>> App.ActiveDocument.recompute()
>>> Gui.activeDocument().hide("Sketch001")
>>> Gui.activeDocument().hide("Revolution")
>>> Gui.activeDocument().setEdit('Pocket')
>>> Gui.ActiveDocument.Pocket.ShapeColor=Gui.ActiveDocument.Revolution.ShapeColor
>>> Gui.ActiveDocument.Pocket.LineColor=Gui.ActiveDocument.Revolution.LineColor
>>> Gui.ActiveDocument.Pocket.PointColor=Gui.ActiveDocument.Revolution.PointColor
>>> App.ActiveDocument.Pocket.Length = 5.000000
>>> App.ActiveDocument.Pocket.Type = 0
>>> App.ActiveDocument.Pocket.UpToFace = None
>>> App.ActiveDocument.recompute()
>>> Gui.activeDocument().resetEdit()
>>> App.activeDocument().addObject("PartDesign::PolarPattern","PolarPattern")
>>> App.ActiveDocument.recompute()
>>> App.activeDocument().PolarPattern.Originals = [App.activeDocument().Pocket,]
>>> App.activeDocument().PolarPattern.Axis = (App.activeDocument().Sketch001, ["N_Axis"])
>>> App.activeDocument().PolarPattern.Angle = 360
>>> App.activeDocument().PolarPattern.Occurrences = 2
>>> Gui.activeDocument().Pocket.Visibility=False
>>> Gui.activeDocument().setEdit('PolarPattern')
>>> Gui.ActiveDocument.PolarPattern.ShapeColor=Gui.ActiveDocument.Pocket.ShapeColor
>>> Gui.ActiveDocument.PolarPattern.DisplayMode=Gui.ActiveDocument.Pocket.DisplayMode
>>> Gui.activeDocument().resetEdit()
>>> App.getDocument("Sans_nom").removeObject("Pocket")
>>> App.ActiveDocument.Sketch001.Placement = App.Placement(App.Vector(0.000000,0.000000,0.000000),App.Rotation(0.000000,0.000000,0.000000,1.000000))
>>> Gui.ActiveDocument.setEdit('Sketch001')
>>> Gui.getDocument('Sans_nom').resetEdit()
>>> App.getDocument('Sans_nom').recompute()
>>> App.getDocument("Sans_nom").Sketch001.Placement=App.Placement(App.Vector(0,0,5), App.Rotation(App.Vector(0,0,1),0), App.Vector(0,0,0))
>>> App.getDocument("Sans_nom").Sketch001.Placement=App.Placement(App.Vector(0,0,5), App.Rotation(App.Vector(0,0,1),0), App.Vector(0,0,0))
>>> App.activeDocument().addObject("PartDesign::Pad","Pad")
>>> App.activeDocument().Pad.Sketch = App.activeDocument().Sketch001
>>> App.activeDocument().Pad.Length = 10.0
>>> App.ActiveDocument.recompute()
>>> Gui.activeDocument().hide("Sketch001")
>>> Gui.activeDocument().setEdit('Pad',0)
>>> App.ActiveDocument.Pad.Length = 5.000000
>>> App.ActiveDocument.Pad.Reversed = 0
>>> App.ActiveDocument.Pad.Midplane = 0
>>> App.ActiveDocument.Pad.Length2 = 100.000000
>>> App.ActiveDocument.Pad.Type = 0
>>> App.ActiveDocument.Pad.UpToFace = None
>>> App.ActiveDocument.recompute()
>>> Gui.activeDocument().resetEdit()
>>> App.getDocument("Sans_nom").Sketch001.Placement=App.Placement(App.Vector(0,0,0), App.Rotation(App.Vector(0,0,1),0), App.Vector(0,0,0))
>>> App.getDocument("Sans_nom").Sketch001.Placement=App.Placement(App.Vector(0,0,0), App.Rotation(App.Vector(0,0,1),0), App.Vector(0,0,0))
>>> Gui.activateWorkbench("DraftWorkbench")
>>> import Draft
>>> Draft.makeArray(FreeCAD.ActiveDocument.Pad,FreeCAD.Vector(1,0,0),FreeCAD.Vector(0,1,0),2,2)
>>> FreeCAD.ActiveDocument.recompute()
>>> FreeCAD.getDocument("Sans_nom").getObject("Array").ArrayType = "polar"
>>> FreeCAD.getDocument("Sans_nom").getObject("Array").Angle = 1.00
>>> FreeCAD.getDocument("Sans_nom").getObject("Array").Angle = 18.00
>>> FreeCAD.getDocument("Sans_nom").getObject("Array").Angle = 180.00
>>> FreeCAD.getDocument("Sans_nom").getObject("Array").NumberPolar = 2
>>> FreeCAD.getDocument("Sans_nom").getObject("Array").NumberPolar = 3
>>> FreeCAD.getDocument("Sans_nom").getObject("Array").NumberPolar = 4
>>> FreeCAD.getDocument("Sans_nom").getObject("Array").NumberPolar = 5
>>> FreeCAD.getDocument("Sans_nom").getObject("Array").Angle = -180.00
>>> FreeCAD.getDocument("Sans_nom").getObject("Array").NumberPolar = 1
>>> FreeCAD.getDocument("Sans_nom").getObject("Array").NumberPolar = 10
>>> FreeCAD.getDocument("Sans_nom").getObject("Array").NumberPolar = 2
>>> FreeCAD.getDocument("Sans_nom").getObject("Array").NumberPolar = 20
>>> FreeCAD.getDocument("Sans_nom").getObject("Array").NumberPolar = 1
>>> FreeCAD.getDocument("Sans_nom").getObject("Array").NumberPolar = 16
>>> Gui.activateWorkbench("PartDesignWorkbench")
>>> App.activeDocument().addObject("Part::Cut","Cut")
>>> App.activeDocument().Cut.Base = App.activeDocument().Array
>>> App.activeDocument().Cut.Tool = App.activeDocument().Revolution
>>> Gui.activeDocument().Array.Visibility=False
>>> Gui.activeDocument().Revolution.Visibility=False
>>> Gui.ActiveDocument.Cut.ShapeColor=Gui.ActiveDocument.Array.ShapeColor
>>> Gui.ActiveDocument.Cut.DisplayMode=Gui.ActiveDocument.Array.DisplayMode
>>> App.ActiveDocument.recompute()
>>> Draft.makeArray(FreeCAD.ActiveDocument.Array,FreeCAD.Vector(1,0,0),FreeCAD.Vector(0,1,0),2,2)
>>> FreeCAD.ActiveDocument.recompute()
>>> Gui.getDocument("Sans_nom").getObject("Array").Visibility=True
>>> Gui.getDocument("Sans_nom").getObject("Revolution").Visibility=True
>>> App.activeDocument().addObject("Part::Cut","Cut")
>>> App.activeDocument().Cut.Base = App.activeDocument().Array
>>> App.activeDocument().Cut.Tool = App.activeDocument().Revolution
>>> Gui.activeDocument().hide("Array")
>>> Gui.activeDocument().hide("Revolution")
>>> Gui.ActiveDocument.Cut.ShapeColor=Gui.ActiveDocument.Array.ShapeColor
>>> Gui.ActiveDocument.Cut.DisplayMode=Gui.ActiveDocument.Array.DisplayMode
>>> App.getDocument("Sans_nom").removeObject("Cut")
>>> App.activeDocument().addObject("Part::Cut","Cut")
>>> App.activeDocument().Cut.Base = App.activeDocument().Revolution
>>> App.activeDocument().Cut.Tool = App.activeDocument().Array
>>> Gui.activeDocument().hide("Revolution")
>>> Gui.activeDocument().hide("Array")
>>> Gui.ActiveDocument.Cut.ShapeColor=Gui.ActiveDocument.Revolution.ShapeColor
>>> Gui.ActiveDocument.Cut.DisplayMode=Gui.ActiveDocument.Revolution.DisplayMode
>>> App.getDocument("Sans_nom").removeObject("Cut")
>>> FreeCAD.getDocument("Sans_nom").getObject("Array").NumberPolar = 1
>>> FreeCAD.getDocument("Sans_nom").getObject("Array").NumberPolar = 14
>>> App.activeDocument().addObject("Part::Cut","Cut")
>>> App.activeDocument().Cut.Base = App.activeDocument().Revolution
>>> App.activeDocument().Cut.Tool = App.activeDocument().Array
>>> Gui.activeDocument().hide("Revolution")
>>> Gui.activeDocument().hide("Array")
>>> Gui.ActiveDocument.Cut.ShapeColor=Gui.ActiveDocument.Revolution.ShapeColor
>>> Gui.ActiveDocument.Cut.DisplayMode=Gui.ActiveDocument.Revolution.DisplayMode
>>> Gui.activeDocument().setEdit('Pad',0)
>>> App.ActiveDocument.Pad.Length = 6.000000
>>> App.ActiveDocument.Pad.Reversed = 0
>>> App.ActiveDocument.Pad.Midplane = 0
>>> App.ActiveDocument.Pad.Length2 = 100.000000
>>> App.ActiveDocument.Pad.Type = 0
>>> App.ActiveDocument.Pad.UpToFace = None
>>> App.ActiveDocument.recompute()
>>> Gui.activeDocument().resetEdit()
>>> App.getDocument("Sans_nom").removeObject("Cut")
>>> FreeCAD.getDocument("Sans_nom").getObject("Array").NumberPolar = 13
>>> FreeCAD.getDocument("Sans_nom").getObject("Array").NumberPolar = 12
>>> App.activeDocument().addObject("Part::Cut","Cut")
>>> App.activeDocument().Cut.Base = App.activeDocument().Revolution
>>> App.activeDocument().Cut.Tool = App.activeDocument().Array
>>> Gui.activeDocument().hide("Revolution")
>>> Gui.activeDocument().hide("Array")
>>> Gui.ActiveDocument.Cut.ShapeColor=Gui.ActiveDocument.Revolution.ShapeColor
>>> Gui.ActiveDocument.Cut.DisplayMode=Gui.ActiveDocument.Revolution.DisplayMode
>>> Gui.SendMsgToActiveView("SaveAs")
>>> App.getDocument("Sans_nom").saveAs("/home/alexandre/Bureau/FreeCAD/Bug-Boolean/Bug-Boolean.fcstd")
>>>

Not able to delete a constraint on point with the given index: 3
Not able to delete a constraint on point with the given index: 1
Traceback (most recent call last):
  File "<string>", line 1, in <module>
<type 'exceptions.IOError'>: The project '/home/alexandre/Documents/Associations/FabLab19/Imprimante 3D/Mecanique/Montage-Assemblage/End-stop-Z.fcstd' is already open!
Drag curve: Not able to move point with the id and type: (4, 0)
Draft workbench activated
Traceback (most recent call last):
  File "/usr/lib/freecad/Mod/Draft/Draft.py", line 4746, in execute
    sh = self.polarArray(obj.Base.Shape,obj.Center,obj.Angle.Value,obj.NumberPolar,obj.Axis,av,fuse)
  File "/usr/lib/freecad/Mod/Draft/Draft.py", line 4787, in polarArray
    fraction = float(angle)/(num-1)
<type 'exceptions.ZeroDivisionError'>: float division by zero
Draft workbench deactivated
TagsNo tags attached.
FreeCAD Information

Activities

Almisuifre

2015-11-29 22:30

reporter  

Bug-Boolean.fcstd (34,776 bytes)

Almisuifre

2015-11-29 22:31

reporter   ~0006566

The image : http://www.pasteall.org/pic/96000

jmaustpc

2016-01-21 15:53

manager   ~0006744

Thank you for taking the time to create this ticket. Please in the future always discuss your issue on the Help forum before you create a bug ticket so as to decrease the quantity of tickets and improve their quality.

Something has gone wrong for you but it works perfectly for me when I force a recompute in my version of FreeCAD below.

You have not posted your "Help menu...About FreeCAD" data so all I can do is guess. I suspect your FreeCAD version is obsolete or has some other problems.

Please feel free to post this in the Help forum. I suspect all you have to do is install FreeCAD from the "Daily" PPA (not the "stable" PPA) and your problems will go away.

I will close this ticket but we can reopen it later if we need to.

OS: Ubuntu 12.04.5 LTS
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.16.6205 (Git)
Build type: Debug
Branch: master
Hash: 89cb2479232ea949b368e849d90fd6ce563154c1
Python version: 2.7.3
Qt version: 4.8.2
Coin version: 3.1.3
OCC version: 6.8.0.oce-0.18-dev

Issue History

Date Modified Username Field Change
2015-11-29 22:30 Almisuifre New Issue
2015-11-29 22:30 Almisuifre File Added: Bug-Boolean.fcstd
2015-11-29 22:31 Almisuifre Note Added: 0006566
2016-01-21 15:53 jmaustpc Note Added: 0006744
2016-01-21 15:54 jmaustpc Status new => closed
2016-01-21 15:54 jmaustpc Assigned To => jmaustpc
2016-01-21 15:54 jmaustpc Resolution open => no change required