View Issue Details

IDProjectCategoryView StatusLast Update
0002679PartDesignBugpublic2017-06-15 12:23
ReporterAdrianPetrovalAssigned To 
Status closedResolutionfixed 
PlatformToshiba Satellite ProOSWindows 64 bitOS Version7
Product Version0.16 
Target VersionFixed in Version0.17 
Summary0002679: Boolean operations in Part workbench give strange results
DescriptionApologies for this very long write-up - I did not know what to write and what to leave out.

This is a problem that started a few weeks ago, even though I have previously managed to do this task successfully (could have been under FC version 15, but I cannot remember for sure).

Problem to solve: imagine a vertical, cylindrical container (tank) filled with a granular material, e.g. sand, let's say with a radius of 2 metres and a height of 2.5 metres. Make a hole in the wall of the vessel, at the bottom, and allow the sand to run out (like an hourglass). When the sand stops flowing out of the hole, the remaining sand inside the vessel will have a certain shape, as shown in a PNG file "True bed.PNG", which I'll attach to another message post (because I can upload only one file per post). PS This image was created with FreeCad when the procedure still worked for me, before the bug that is being reported here.

The shape of the surface depends on the angle of repose of the granular material. In this case an angle of repose of 45 degrees was used, in which case the angle at the tip of the unloading cone will be 90 degrees. NB This detail is important for later discussion.

For the model, the Part Design workbench was used. This was also the workbench that was used previously, when the procedure still worked. However, when I had the problem described here, I also tried a model based on the basic shapes (cylinder and cone) in the Part workbench, with the same problems.

Details in the "Steps to Reproduce" below, but in summary: Created a circle and padded it to a height of 2500 mm to represent the vessel before any sand is unloaded. The cylinder was shifted so that the Z axis was on its wall, and not in the middle of the vessel. Modelled the unloading shape as an inverted cone with its tip at the XYZ origin, by using a revolution of an appropriate triangle.

Used Boolean cuts as follows: first select the cylinder, then the cone, and do a subtractive cut. This should give the remaining bed, as shown in the PNG file. Alternatively, do an intersection of the two shapes, which should show the part of the sand that had been unloaded, i.e. the missing part. When these two operations failed, I also tried a union, just to see, and it also gave an error.

The model, before any Boolean cuts, is shown in the attached file "Sandsilo.FCSTD". I shall also attach the above-mentioned image "True bed.PNG" to another post.

There is a lot more information and peculiarities about this problem that I discovered while looking for a workaround. However, it is too much and too complicated to post all of it here. If anybody is interested, I can discuss and demonstrate this via a Skype screenshare- please drop me an Email to make a mutually convenient appointment.
Steps To ReproduceUse Part Design workbench.

Draw a circle in the XY plane, with the following constraints: centre point tangential with X-axis, distance between centrepoint and Y-axis 2000 mm, radius of circle 2000 mm - fully constrained.

Pad the circle to a height of 2500 mm in the +Z direction. This creates the cylindrical full vessel model.
Draw a triangle in the XZ plane, with the following constraints: one side vertical, one side horizontal, these two sides are equal to each other and have a length of the 2600 mm, the vertical side coincides with the Z axis with the 45 degree angle on the origin of the three axis - fully constrained.

Create a full 360 revolution around the vertical axis (Z axis). This gives a inverted cone with the tip at the XYZ origin and the angle of the cone at the tip 90 degrees. This is the shape of the hole if the sand would have drained from the middle of the vessel. The height of the cone (2600 mm) is s bit more than the height of the cylinder (2500 mm), to ensure a clean cut and avoid co-planar issues.

Change to Part workbench, select first the cylinder and then the cone, and do a Boolean cut (i.e. removing the cone from the cylinder). This gives spurious results, for instance it sometimes just come back with the original cylinder with a line where the cut should be. Sometimes it removes all the shapes and reports an error in the model pane "Resulting shape is invalid".

When trying to do a Common Boolean intersection, it also clears the screen, without any error message. When trying to do a Boolean union (just to see), it gave an error "ACCESS VIOLATION at address......"

Additional InformationOS: Windows 7
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.16.6704 (Git)
Build type: Release
Branch: releases/FreeCAD-0-16
Hash: 0c449d7e8f9b2b1fb93e3f8d1865e2f59d7ed253
Python version: 2.7.8
Qt version: 4.8.7
Coin version: 4.0.0a
OCC version: 6.8.0.oce-0.17
TagsOCC Bug, upstream


related to 0002716 closedKunda1 FreeCAD Boolean operations on planar and circular objects fail if intersection has elliptic or hyperbolic shape 



2016-08-22 13:15


Sandsilo.FCStd (7,410 bytes)


2016-08-28 00:40


True bed.png (183,425 bytes)
True bed.png (183,425 bytes)


2017-01-14 16:27

reporter   ~0007765

confirmed. but for me a classic boolean problem due to the vertex on the edge of the cube, and I guess due to OCCT, not Freecad


2017-01-28 19:59

manager   ~0008063

Forum thread:


2017-05-25 20:37

manager   ~0009140

@Abdullah also this PDN bug


2017-05-25 22:31

manager   ~0009143


I can no longer reproduce this bug in:

OS: Ubuntu 16.04.2 LTS
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.17.11122 +2 (Git)
Build type: Debug
Branch: occ_extra_info
Hash: ba1e1d03d1b48bb9f6bb05baabcaf2bcef48d890
Python version: 2.7.12
Qt version: 4.8.7
Coin version: 4.0.0a
OCC version: 7.1.0 (TBB)
TBB version: 9.2

You may close this ticket, or invite the reporter to confirm that the bug is gone in the current master, so as to assure user satisfaction.


2017-05-26 03:06

manager   ~0009145

Resolving unless someone can reproduce.


2017-06-15 12:23

manager   ~0009382

Fixed upstream. Thanks Abdullah for testing on latest occ 7.1.0

Issue History

Date Modified Username Field Change
2016-08-22 13:15 AdrianPetroval New Issue
2016-08-22 13:15 AdrianPetroval File Added: Sandsilo.FCStd
2016-08-22 21:04 wmayer Relationship added parent of 0002680
2016-08-28 00:40 normandc File Added: True bed.png
2016-08-28 00:44 normandc Relationship deleted parent of 0002680
2017-01-14 16:27 nemesis Note Added: 0007765
2017-01-28 19:59 Kunda1 Note Added: 0008063
2017-01-30 14:07 Kunda1 Tag Attached: OCC Bug
2017-01-30 14:07 Kunda1 Tag Attached: upstream
2017-01-30 14:08 Kunda1 Relationship added related to 0002716
2017-05-25 20:37 Kunda1 Note Added: 0009140
2017-05-25 22:31 abdullah Note Added: 0009143
2017-05-26 03:06 Kunda1 Status new => resolved
2017-05-26 03:06 Kunda1 Resolution open => fixed
2017-05-26 03:06 Kunda1 Fixed in Version => 0.17
2017-05-26 03:06 Kunda1 Note Added: 0009145
2017-06-15 12:23 Kunda1 Status resolved => closed
2017-06-15 12:23 Kunda1 Note Added: 0009382