View Issue Details

IDProjectCategoryView StatusLast Update
0001994ArchBugpublic2015-09-02 16:29
Reporterfarisey Assigned Toyorik  
PrioritynormalSeverityminorReproducibilityalways
Status closedResolutionfixed 
Product Version0.14 
Fixed in Version0.16 
Summary0001994: Circular dependencies in Sketch-based Arch Windows
DescriptionDear Yorik!

Continuing http://forum.freecadweb.org/viewtopic.php?f=8&t=2636&start=50#p20413
and "Document::recompute: The graph must be a DAG."

I guess I found it out and this is essential.

An Arch Window becomes a part of a host Arch Wall and changes it. But if a window is based on a sketch which is binded to wall's edges, then we have dependency loop: changed (windowed) wall brokes the binds on those the changing was built.

Steps To Reproduce1. Make a wall.
2. Make a sketch on the wall's face.
2.1 The sketch MUST BE binded with the face's edges using External Geometry.
3. Make a window based on the sketch.

or simply make an Arch Window on the Sketch001 of the attached project.
Additional InformationLinux 32-bit, commit 89a6e67, but it doesn't matter, I'm sure.
TagsNo tags attached.
FreeCAD Information

Activities

farisey

2015-03-07 20:59

reporter  

DAG.fcstd (Attachment missing)

farisey

2015-03-07 21:14

reporter   ~0005856

This is not so minor as can seems. For example I cant change the height of the foundation on which such windowed wall is built.
It's ok after window removing.

yorik

2015-03-11 23:05

administrator   ~0005859

This is solved in 0.15 already.

farisey

2015-03-13 13:23

reporter   ~0005865

Hmm..

I asked to set git tag for v0.15 in FC IRC, but that was ignored, unfortunatelly.
So.. I don't see where v0.15 is. Only unclear (for me) commit bd6a5ce ("Bumped version to 0.15 and added a temporary new splash"):

-set(FREECAD_VERSION "0.13")
+set(FREECAD_VERSION "0.14")
......
-#define FCVersionMinor "14"
+#define FCVersionMinor "15"^M

I retried the bug with the current HEAD (10aa881, see conamed attach) and that was reproduced (make a Window on the Sketch001)

farisey

2015-03-13 13:23

reporter  

DAG.10aa881f.FCStd (Attachment missing)

farisey

2015-03-13 13:59

reporter   ~0005866

May be v0.15 is placed in a custom git branch? But I dont see obvious variant...

yorik

2015-03-13 16:14

administrator   ~0005867

I don't really understand what you mean... But in any case, version 0.15 is the current git master from the sourceforge repo. And with it, I can't reproduce your bug. When doing point 3. (making a window with the sketch selected), things work correctly (the external edge binding is removed).

farisey

2015-03-13 21:16

reporter   ~0005868

Yorik, see attached video please. Only one of two ExternalGeometry's was autoremoved, and there is no window hole, as you can see.

But I guess, removing of external bindings is not a good idea. This is the fast and easy decision, yes, of course; but not good. Sketches becomes unconstrained, any host changing can produce unexpected movings of slave objects.

And this is the common place of FC's External. I discussed with @ickby in IRC but without significant results.

I see two perspective improvements:

1. The ability to bind to ExternalVertexes, not only Edges.
2. Any changing which can reenumerate object's edges, faces or vertexes must be workarounded by an algorithm of matching between old and new parts. Found => ok and rename back(or rebind slave sketches), not found => remove all bindings and report it.
Or completely avoid reenumerating by using autoincrement for naming, for example.
I tried to analyze the possibility of the above, but I doesn't have sufficient skills.

PS.
As I understand, v0.15 is the _current developing_ (all after 0.14). I thought this is a release and couldn't find it on the site or in the git.

farisey

2015-03-13 21:17

reporter  

dag2.avi (Attachment missing)

yorik

2015-03-13 21:25

administrator   ~0005869

Ok now I see... Indeed If you have more than one external edge it fails. I'll fix that.

Removing the external geometry is unfortunately the only solution at the moment, because FreeCAD strictly prohibits circular dependency. And since the wall depends on the window to create its opening, and the window depends on the sketch, the sketch cannot depend on the wall.

farisey

2015-03-14 13:17

reporter   ~0005871

Yes, I agree this is essential for Arch Windows, and cant be easily fixed.

But what do you think about the improvements above? It's a bit offtop, but the first floor of my very first house moves onto the side of the foundation, when I made a vent hole. I was forced to abandon any external bindings in the second variant. And now any base resizing leads to a lot of manual work.

Take a look... Any shape contains of vertexes, edges and faces. Any new item gets autoincrement uid. An External Geometry uses edge's uid not index for binding. Adding vertexes to an external geometry obviously expands FC abilities.

I understand this is not as easy as it looks, but I'm sure it can be great enhancement for the project.

So
1. What to you mean?
2. Is it possible.... mmm.. to force this idea among the maintainers? :)

Thanks!

yorik

2015-03-14 15:46

administrator   ~0005873

This is already the subject of bug 0000876 but it is a huge work and it won't be done overnight... As for selecting vertices, that could be done, but I suggest you discuss the idea on the forum first to find people interested in implementing it.

This won't solve the window dependency issue, but honestly I still haven't found a good solution for that problem.

yorik

2015-09-02 16:29

administrator   ~0006326

The problem with windows based on sketches that contain more than one external geometry is now fixed, so I'll close this issue since there is no more that can be done here. Reopen if needed.

Issue History

Date Modified Username Field Change
2015-03-07 20:59 farisey New Issue
2015-03-07 20:59 farisey File Added: DAG.fcstd
2015-03-07 21:14 farisey Note Added: 0005856
2015-03-11 23:05 yorik Note Added: 0005859
2015-03-11 23:05 yorik Status new => closed
2015-03-11 23:05 yorik Assigned To => yorik
2015-03-11 23:05 yorik Resolution open => no change required
2015-03-11 23:05 yorik Fixed in Version => 0.15
2015-03-13 13:23 farisey Note Added: 0005865
2015-03-13 13:23 farisey Status closed => feedback
2015-03-13 13:23 farisey Resolution no change required => reopened
2015-03-13 13:23 farisey File Added: DAG.10aa881f.FCStd
2015-03-13 13:59 farisey Note Added: 0005866
2015-03-13 13:59 farisey Status feedback => assigned
2015-03-13 16:14 yorik Note Added: 0005867
2015-03-13 16:15 yorik Status assigned => feedback
2015-03-13 21:16 farisey Note Added: 0005868
2015-03-13 21:16 farisey Status feedback => assigned
2015-03-13 21:17 farisey File Added: dag2.avi
2015-03-13 21:25 yorik Note Added: 0005869
2015-03-13 21:25 yorik Fixed in Version 0.15 => 0.16
2015-03-14 13:17 farisey Note Added: 0005871
2015-03-14 15:46 yorik Note Added: 0005873
2015-09-02 16:29 yorik Note Added: 0006326
2015-09-02 16:29 yorik Status assigned => closed
2015-09-02 16:29 yorik Resolution reopened => fixed