View Issue Details

IDProjectCategoryView StatusLast Update
0002227PartDesignBugpublic2018-10-03 21:02
Reporterberka Assigned Toabdullah  
PrioritynormalSeveritymajorReproducibilityalways
Status closedResolutionfixed 
PlatformMac IntelOSOS XOS Version10.10.4 (14E46)
Product Version0.15 
Target Version0.18Fixed in Version0.18 
Summary0002227: Fillet silently fails on face with too many edges
DescriptionIf I try to fillet a face with many edges (724 on my experiment), the operation almost-silently fails.

A brief error message flashed through the status bar, which prompted me to dig deeper.

Python Console says:

>>> App.activeDocument().addObject("PartDesign::Fillet","Fillet")
>>> App.activeDocument().Fillet.Base = (App.ActiveDocument.MultiTransform,["Edge4","Edge7","Edge10","Edge12","Edge13","Edge14","Edge15","Edge16","Edge17","Edge18","Edge19","Edge20","Edge21","Edge22","Edge23","Edge24","Edge25","Edge26","Edge27","Edge28","Edge29","Edge30","Edge31","Edge32","Edge33","Edge34","Edge35","Edge36","Edge37","Edge38","Edge39","Edge40","Edge41","Edge42","Edge43","Edge44","Edge45","Edge46","Edge47","Edge48","Edge49","Edge50","Edge51","Edge52","Edge53","Edge54","Edge55","Edge56","Edge57","Edge58","Edge59","Edge60","Edge61","Edge62","Edge63","Edge64","Edge65","Edge66","Edge67","Edge68","Edge69","Edge70","Edge71","Edge72","Edge73","Edge74","Edge75","Edge76","Edge77","Edge78","Edge79","Edge80","Edge81","Edge82","Edge83","Edge84","Edge85","Edge86","Edge87","Edge88","Edge89","Edge90","Edge91","Edge92","Edge93","Edge94","Edge95","Edge96","Edge97","Edge98","Edge99","Edge100","Edge101","Edge102","Edge103","Edge104","Edge105","Edge106","Edge107","Edge108","Edge109","Edge110","Edge111","Edge112","Edge113","Edge114","Edge115","Edge116","Edge117","Edge118","Edge119","Edge120","Edge121","Edge122","Edge123","Edge124","Edge125","Edge126","Edge127","Edge128","Edge129","Edge130","Edge131","Edge132","Edge133","Edge134","Edge135","Edge136","Edge137","Edge138","Edge139","Edge140","Edge141","Edge142","Edge143","Edge144","Edge145","Edge146","Edge147","Edge148","Edge149","Edge150","Edge151","Edge152","Edge153","Edge154","Edge155","Edge156","Edge157","Edge158","Edge159","Edge160","Edge161","Edge162","Edge163","Edge164","Edge165","Edge166","Edge167","Edge168","Edge169","Edge170","Edge171","Edge172","Edge173","Edge174","Edge175","Edge176","Edge177","Edge178","Edge179","Edge180","Edge181","Edge182","Edge183","Edge184","Edge185","Edge186","Edge187","Edge188","Edge189","Edge190","Edge191","Edge192","Edge193","Edge194","Edge195","Edge196","Edge197","Edge198","Edge199","Edge200","Edge201","Edge202","Edge203","Edge204","Edge205","Edge206","Edge207","Edge208","Edge209","Edge210","Edge211","Edge212","Edge213","Edge214","Edge215","Edge216","Edge217","Edge218","Edge219","Edge220","Edge221","Edge222","Edge223","Edge224","Edge225","Edge226","Edge227","Edge228","Edge229","Edge230","Edge231","Edge232","Edge233","Edge234","Edge235","Edge236","Edge237","Edge238","Edge239","Edge240","Edge241","Edge242","Edge243","Edge244","Edge245","Edge246","Edge247","Edge248","Edge249","Edge250","Edge251","Edge252","Edge253","Edge254","Edge255","Edge256","Edge257","Edge258","Edge259","Edge260","Edge261","Edge262","Edge263","Edge264","Edge265","Edge266","Edge267","Edge268","Edge269","Edge270","Edge271","Edge272","Edge273","Edge274","Edge275","Edge276","Edge277","Edge278","Edge279","Edge280","Edge281","Edge282","Edge283","Edge284","Edge285","Edge286","Edge287","Edge288","Edge289","Edge290","Edge291","Edge292","Edge293","Edge294","Edge295","Edge296","Edge297","Edge298","Edge299","Edge300","Edge301","Edge302","Edge303","Edge304","Edge305","Edge306","Edge307","Edge308","Edge309","Edge310","Edge311","Edge312","Edge313","Edge314","Edge315","Edge316","Edge317","Edge318","Edge319","Edge320","Edge321","Edge322","Edge323","Edge324","Edge325","Edge326","Edge327","Edge328","Edge329","Edge330","Edge331","Edge332","Edge333","Edge334","Edge335","Edge336","Edge337","Edge338","Edge339","Edge340","Edge341","Edge342","Edge343","Edge344","Edge345","Edge346","Edge347","Edge348","Edge349","Edge350","Edge351","Edge352","Edge353","Edge354","Edge355","Edge356","Edge357","Edge358","Edge359","Edge360","Edge361","Edge362","Edge363","Edge364","Edge365","Edge366","Edge367","Edge368","Edge369","Edge370","Edge371","Edge372","Edge373","Edge374","Edge375","Edge376","Edge377","Edge378","Edge379","Edge380","Edge381","Edge382","Edge383","Edge384","Edge385","Edge386","Edge387","Edge388","Edge389","Edge390","Edge391","Edge392","Edge393","Edge394","Edge395","Edge396","Edge397","Edge398","Edge399","Edge400","Edge401","Edge402","Edge403","Edge404","Edge405","Edge406","Edge407","Edge408","Edge409","Edge410","Edge411","Edge412","Edge413","Edge414","Edge415","Edge416
>>>

The Report view says:
traceback><type 'exceptions.SyntaxError'>: ('EOL while scanning string literal', ('<string>', 1, 4056, 'App.activeDocument().Fillet.Base = (App.ActiveDocument.MultiTransform,["Edge4","Edge7","Edge10","Edge12","Edge13","Edge14","Edge15","Edge16","Edge17","Edge18","Edge19","Edge20","Edge21","Edge22","Edge23","Edge24","Edge25","Edge26","Edge27","Edge28","Edge29","Edge30","Edge31","Edge32","Edge33","Edge34","Edge35","Edge36","Edge37","Edge38","Edge39","Edge40","Edge41","Edge42","Edge43","Edge44","Edge45","Edge46","Edge47","Edge48","Edge49","Edge50","Edge51","Edge52","Edge53","Edge54","Edge55","Edge56","Edge57","Edge58","Edge59","Edge60","Edge61","Edge62","Edge63","Edge64","Edge65","Edge66","Edge67","Edge68","Edge69","Edge70","Edge71","Edge72","Edge73","Edge74","Edge75","Edge76","Edge77","Edge78","Edge79","Edge80","Edge81","Edge82","Edge83","Edge84","Edge85","Edge86","Edge87","Edge88","Edge89","Edge90","Edge91","Edge92","Edge93","Edge94","Edge95","Edge96","Edge97","Edge98","Edge99","Edge100","Edge101","Edge102","Edge103","Edge104","Edge105","Edge106","Edge107","Edge108","Edge109","Edge110","Edge111","Edge112","Edge113","Edge114","Edge115","Edge116","Edge117","Edge118","Edge119","Edge120","Edge121","Edge122","Edge123","Edge124","Edge125","Edge126","Edge127","Edge128","Edge129","Edge130","Edge131","Edge132","Edge133","Edge134","Edge135","Edge136","Edge137","Edge138","Edge139","Edge140","Edge141","Edge142","Edge143","Edge144","Edge145","Edge146","Edge147","Edge148","Edge149","Edge150","Edge151","Edge152","Edge153","Edge154","Edge155","Edge156","Edge157","Edge158","Edge159","Edge160","Edge161","Edge162","Edge163","Edge164","Edge165","Edge166","Edge167","Edge168","Edge169","Edge170","Edge171","Edge172","Edge173","Edge174","Edge175","Edge176","Edge177","Edge178","Edge179","Edge180","Edge181","Edge182","Edge183","Edge184","Edge185","Edge186","Edge187","Edge188","Edge189","Edge190","Edge191","Edge192","Edge193","Edge194","Edge195","Edge196","Edge197","Edge198","Edge199","Edge200","Edge201","Edge202","Edge203","Edge204","Edge205","Edge206","Edg


I'll attach a sample document where a 15x6 array of pockets works (slowly...), but 30x6 array of pockets fails. I didn't try to find the breaking point...
Steps To ReproduceMake a rectangle sketch; pad it.
Make an array of square pockets on a face.
Try to fillet the array.

If face has too many edges (e.g. 30x6 array), fillet almost-silently fails.

Additional InformationOS: Mac OS X
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.15.4671 (Git)
Branch: releases/FreeCAD-0-15
Hash: 244b3aef360841646cbfe80a1b225c8b39c8380c
Python version: 2.7.9
Qt version: 4.8.6
Coin version: 4.0.0a
OCC version: 6.8.0.oce-0.17
Tags#pending, OCC 7.1, OCC Bug, upstream
FreeCAD Information

Relationships

duplicate of 0002309 closedwmayer PartDesign Fillet fail without warning when too many faces are selected 
related to 0003060 new More streamlined UI for adding edges and faces (e.g. for PD Fillet tool) 

Activities

berka

2015-08-25 02:35

reporter  

FilletManyEdges.FCStd (116,021 bytes)

berka

2016-04-23 20:53

reporter   ~0006999

Reproduced with sample file on 0.16:
OS: Mac OS X
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.16.6702 (Git)
Build type: Release
Branch: (detached from d2a08df)
Hash: d2a08df5e2db1c9c1dfa39dd45f1a306b3955cdc
Python version: 2.7.11
Qt version: 4.8.7
Coin version: 3.1.3
OCC version: 6.8.0.oce-0.17

Kunda1

2017-01-26 21:41

administrator   ~0008001

Forum thread: https://forum.freecadweb.org/viewtopic.php?f=10&t=20257

normandc

2017-01-29 17:34

manager   ~0008086

In FreeCAD 0.17 I get an error "Failed to create chamfer". The PartDesign Chamfer Parameters dialog in Tasks panel remains active after closing the error message. There is no output in the Python console nor in the Report view. N.B. Because of the changes to PartDesign in current master, I needed to migrate the file (from the Part Design menu) and activate the Body prior to creating the PartDesign Chamfer.

I think this needs to be tested with FreeCAD compiled with the latest version of OCC 7.1.0, which I don't have.

OS: Ubuntu 14.04.5 LTS
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.17.9822 (Git)
Build type: None
Branch: master
Hash: 0df4af4ba5e6edce825af6ecf6d024c704292633
Python version: 2.7.6
Qt version: 4.8.6
Coin version: 4.0.0a
OCC version: 6.8.0.oce-0.17

Kunda1

2017-01-29 18:56

administrator   ~0008087

@normandc would you say the same for 0002309 ?

normandc

2017-01-29 20:06

manager   ~0008093

Last edited: 2017-01-29 20:07

AFAICT 0002309 is a different issue.

On a side note: the forced side scrolling due to the width of the Description window is annoying...

Kunda1

2017-05-02 21:56

administrator   ~0008867

I asked NormandC if he would test with OCC 7.1.0, his response:
Still the same result in master based on OCCT 7.1.0.

Maybe this is not related to the OCCT kernel, but rather to FreeCAD's own inability to treat as many edges. I don't have the knowledge to go further.

OS: Ubuntu 16.04.2 LTS
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.17.10802 (Git)
Build type: None
Branch: master
Hash: 10ce910c03347a90712327a7cc7be2bcdee13afc
Python version: 2.7.12
Qt version: 4.8.7
Coin version: 4.0.0a
OCC version: 7.1.0

abdullah

2017-05-29 15:04

manager   ~0009187

Filleting Face5 fails with error "Failed to create fillet". This comes from OCC:


        BRepFilletAPI_MakeFillet mkFillet(baseShape.getShape());

        for (std::vector<std::string>::const_iterator it=SubNames.begin(); it != SubNames.end(); ++it) {
            TopoDS_Edge edge = TopoDS::Edge(baseShape.getSubShape(it->c_str()));
            mkFillet.Add(radius, edge);
        }

        mkFillet.Build();
        if (!mkFillet.IsDone())
            return new App::DocumentObjectExecReturn("Failed to create fillet");

OS: Ubuntu 16.04.2 LTS
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.17.11154 +2 (Git)
Build type: Debug
Branch: fixes_2530
Hash: 72730bc25e374a4875d3322a22696557380a00d1
Python version: 2.7.12
Qt version: 4.8.7
Coin version: 4.0.0a
OCC version: 7.1.0

Another test filleting about 30 edges of the square pattern, when changing from 1mm to 0,4 mm radius, ended up in me killing FC after 30 minutes of full 1 core activity.

abdullah

2017-05-30 17:06

manager  

Fillet_ok_1604edges.png (92,116 bytes)   
Fillet_ok_1604edges.png (92,116 bytes)   

abdullah

2017-05-30 17:06

manager   ~0009194

Last edited: 2017-05-30 18:39

Well, I had a detailed note written and there was a problem with the security token so I lost all of it.

Brief summary:

1. Yes, I can still reproduce a problem with the file provided after migration, the problem now is "Failed to create Fillet" and this error comes directly from OCC. It is still to identify what exactly doesn't OCC like.

2. I have identified one general problem with Fillets OCC has, when a line is split into contiguous segments like in the attachment. Then filleting fails.

3. However, FC has no (general) problem with tons of edges. My example filleting 1604 edges (see attachment) works, it takes time, but it works.

4. The UI for adding and removing edges is tedious, slow, if somebody is forced to be productive with it, there are high chances of that person ultimately committing suicide. Probably it makes sense to create a separate feature request asking for an improvement. (Admin Edit: see 0003060 )

5. I do not know if it was ever talked about, but a refined feature would be great to put it just before filleting in case of contiguous segments. You most likely would lose the toponaming (when ready), but the alternative is going out of PDN to do a Part->Refine and then Fillet (where you would most probably use Part->Fillet as you are already out of the body). Somebody with greater experience could evaluate this need.

6. It is part of the complaint in this ticket, the notification to the user is quite deficient. I want to improve this in a uniform way. I will wait for the last PR of exception improvements gets merged. Then I will make something similar for App::DocumentObjectExecReturn.

Fillet_contiguous_edges.png (12,024 bytes)   
Fillet_contiguous_edges.png (12,024 bytes)   

Kunda1

2017-05-30 18:43

administrator   ~0009195

@Abdullah I created 0003060 while chuckling about comment No. 4
Feel free split this ticket up in to other ticket sales if needed. FYI, the OCC part is an upstream bug ? If so we should report it.

abdullah

2017-05-30 20:01

manager   ~0009196

@kunda1
Thanks!

As for the question. I am undecided. I am not sure about whether it can be considered to be a bug, or simply we are not supposed to pretend to have a such a part filleted (we should first refine the part and then apply the Fillet).

Unless somebody else have a strong opinion about this, I think it would be interesting to "tag" problems with Part/Part Design Filleting tool and try to identify more corner cases. Then we may be in a better position to decided whether to report and what to report.

It has happened to me during actual use of PDN that the filleting tool has caused FC to crash. Unfortunately we do not have reproducible tickets for that yet. If that crash comes from OCC then it would make a lot of sense to report it.

abdullah

2017-05-30 20:51

manager   ~0009197

@kunda1

1. The problem with the file is that the right most column is too close to the border, so 1 mm is just too much for a fillet, with 0,2 mm it works just fine.


So OCC Fillet limitations:
a. Contiguous colinear segments
b. Insufficient space for a fillet.

In the meantime, I have coded FeatureFillet to return an error if the radius of the fillet is zero. Giving a zero radius Fillet was causing FC to hang.

abdullah

2017-05-30 21:26

manager   ~0009198

- It is acknowledged that the information provided to the user is not appropriate.
- The problem, other than the stated OCC limitations, is no longer reproducible if appropriate radius having regard to the part is selected.

Kunda1

2018-01-18 14:37

administrator   ~0010791

@abdullah is there still an upstream limitation for OCC7.2 ?

abdullah

2018-01-19 16:22

manager   ~0010793

@kunda1

I am not sure what you mean. I use opencascade from the PPA which currently is 7.1. I have not tested 7.2 is that is what you mean.

Kunda1

2018-01-19 16:24

administrator   ~0010794

@abdullah yes, that's exactly what I mean. I know some devs have been able to compile FC with OCC7.2 (I thought you were one of them). Disregard the message then. Perhaps @wmayer can weigh in ?

Kunda1

2018-02-18 12:42

administrator   ~0010963

@wmayer can you test this with OCC7.2 ?

wmayer

2018-02-19 09:31

administrator   ~0010965

The error posted by the OP is a duplicate of 0002309 which is fixed for more than a year now.

Kunda1

2018-02-21 14:39

administrator   ~0010968

@wmayer and what of the fate of this ticket?

Kunda1

2018-03-03 11:07

administrator   ~0010993

@wmayer sorry to ping you on this, but I'm trying to keep all the OCC bugs organized in https://forum.freecadweb.org/viewtopic.php?f=10&t=20264 Can you make a verdict on this ?

wmayer

2018-10-03 21:02

administrator   ~0011907

The original issue with the broken Python command was fixed a long time ago.
After fixing this the new issue is the filleting. But this fails because of incorrect user input.

In order to better analyse what really happens is to reduce the grid array e.g. to 2x2 elements as the fillet operation is much faster then.
When measuring the smallest distance between the hole and the border you will see it's 1.61 and thus the maximum fillet radius is ~0.8 and the default of 1 mm makes it to fail.
When manually setting the radius to 0.8 then everything works as expected.

Issue History

Date Modified Username Field Change
2015-08-25 02:35 berka New Issue
2015-08-25 02:35 berka File Added: FilletManyEdges.FCStd
2016-04-23 20:53 berka Note Added: 0006999
2017-01-26 21:41 Kunda1 Note Added: 0008001
2017-01-26 21:41 Kunda1 Tag Attached: #pending
2017-01-28 10:59 Kunda1 Relationship added related to 0002309
2017-01-29 17:34 normandc Note Added: 0008086
2017-01-29 18:51 Kunda1 Tag Attached: OCC 7.1
2017-01-29 18:51 Kunda1 Tag Attached: OCC Bug
2017-01-29 18:51 Kunda1 Tag Attached: upstream
2017-01-29 18:56 Kunda1 Note Added: 0008087
2017-01-29 20:06 normandc Note Added: 0008093
2017-01-29 20:06 normandc Note Edited: 0008093
2017-01-29 20:07 normandc Note Edited: 0008093
2017-01-29 20:19 Kunda1 Description Updated
2017-05-02 21:56 Kunda1 Note Added: 0008867
2017-05-29 15:04 abdullah Note Added: 0009187
2017-05-30 17:06 abdullah File Added: Fillet_ok_1604edges.png
2017-05-30 17:06 abdullah File Added: Fillet_contiguous_edges.png
2017-05-30 17:06 abdullah Note Added: 0009194
2017-05-30 18:39 Kunda1 Note Edited: 0009194
2017-05-30 18:43 Kunda1 Note Added: 0009195
2017-05-30 18:43 Kunda1 Relationship added related to 0003060
2017-05-30 20:01 abdullah Note Added: 0009196
2017-05-30 20:51 abdullah Note Added: 0009197
2017-05-30 21:26 abdullah Assigned To => abdullah
2017-05-30 21:26 abdullah Status new => acknowledged
2017-05-30 21:26 abdullah Note Added: 0009198
2018-01-18 14:37 Kunda1 Note Added: 0010791
2018-01-19 16:22 abdullah Note Added: 0010793
2018-01-19 16:24 Kunda1 Note Added: 0010794
2018-02-18 12:42 Kunda1 Note Added: 0010963
2018-02-19 09:31 wmayer Note Added: 0010965
2018-02-21 14:38 Kunda1 Relationship replaced duplicate of 0002309
2018-02-21 14:39 Kunda1 Note Added: 0010968
2018-03-03 11:07 Kunda1 Note Added: 0010993
2018-06-12 20:16 Kunda1 Target Version => 0.18
2018-10-03 21:02 wmayer Status acknowledged => closed
2018-10-03 21:02 wmayer Resolution open => fixed
2018-10-03 21:02 wmayer Fixed in Version => 0.18
2018-10-03 21:02 wmayer Note Added: 0011907