PR#2862: Configuration Table using Spreadsheet

Post here if you have re-based and finalised code to integrate into master, which was discussed, agreed to and tested in other forums. You can also submit your PR directly on github.
Forum rules
Be nice to others! Respect the FreeCAD code of conduct!
carlopav
Veteran
Posts: 2062
Joined: Mon Dec 31, 2018 1:49 pm
Location: Venice, Italy

Re: PR#2862: Configuration Table using Spreadsheet

Post by carlopav »

Great! I'll investigate that so. Thanks!
follow my experiments on BIM modelling for architecture design
carlopav
Veteran
Posts: 2062
Joined: Mon Dec 31, 2018 1:49 pm
Location: Venice, Italy

Re: PR#2862: Configuration Table using Spreadsheet

Post by carlopav »

realthunder wrote: Sun May 10, 2020 1:25 pm ping
Tried href() from asm3 fork. It's just wonderful to be able to avoid cyclic dependency problem when using a parent Part property from Part Childrens. Hope this PR will be merged soon! This is one of the small things that really improve usability a lot! Thanks for providing it.
follow my experiments on BIM modelling for architecture design
User avatar
czinehuba
Posts: 159
Joined: Mon Oct 15, 2018 4:59 am
Location: UK
Contact:

Re: PR#2862: Configuration Table using Spreadsheet

Post by czinehuba »

Hi @realthunder,

I helping out openventilator project with some open source 3d models for electronic components and taking advantage of configuration tables. (trying to use your latest AppImage whenever possible) Awsome features by the way.

I don't know if this is the right place report bug. But I have noticed some issue. Let me know how to report it in the future and will do so.

*As I use both linux and MS version, sometimes the Linux version doensn't open the files created in MS. I have attached one of the files. I know it has a shapestring object and the path are different, but I tried manually editing the search path for the font in the file and that doesn't work. I don't know if I'm missing something.
This file also has a few chamfers which turn on and off depending on the configuration selected.

*Also relating to this one, Topo naming almost always work but sometimes I have to reselect edges (when openning up with newer/older/linux version) Can't replicate that exactly. But would there be any reason for it.
If I can suggest this, Fusion 360 has a really good feature which I haven't seen in other cad software. has to option to fix missing references.
https://www.youtube.com/watch?v=Wj9kxUfBIvo

*Another issue I found for the autocomplete (This is awsome as well.) When I create a datum object and try to reference from spreadsheet,
it chashes if I type the alias/reference needed. If I scroll down and select it with a mouse it works. Had a few cursing moements until I figured that out :D . Everywhere else seem to work appart from datum features.

Thanks
Huba
Attachments
43650-XX12_win.FCStd
(737.82 KiB) Downloaded 156 times
realthunder
Veteran
Posts: 2190
Joined: Tue Jan 03, 2017 10:55 am

Re: PR#2862: Configuration Table using Spreadsheet

Post by realthunder »

czinehuba wrote: Tue May 19, 2020 12:09 pm *Also relating to this one, Topo naming almost always work but sometimes I have to reselect edges (when openning up with newer/older/linux version) Can't replicate that exactly. But would there be any reason for it.
If I can suggest this, Fusion 360 has a really good feature which I haven't seen in other cad software. has to option to fix missing references.
https://www.youtube.com/watch?v=Wj9kxUfBIvo
I actually implement similar feature for fixing element reference in asm3, because the Element object stores the old shape. The sketch external geometry reference has similar behavior, as it too persists the origin referenced geometry. And you can choose to fix or detach.This function can't be easily duplicated to other features. May I know which feature you are referring to?

*Another issue I found for the autocomplete (This is awsome as well.) When I create a datum object and try to reference from spreadsheet,
it chashes if I type the alias/reference needed. If I scroll down and select it with a mouse it works. Had a few cursing moements until I figured that out :D . Everywhere else seem to work appart from datum features.
Can you please provide more details? Is this crash repeatable? Which type of datum you are using. A sample file maybe. Please post your FreeCAD about information. I can't reproduce it on my computer.
Try Assembly3 with my custom build of FreeCAD at here.
And if you'd like to show your support, you can donate through patreon, liberapay, or paypal
User avatar
czinehuba
Posts: 159
Joined: Mon Oct 15, 2018 4:59 am
Location: UK
Contact:

Re: PR#2862: Configuration Table using Spreadsheet

Post by czinehuba »

*Another issue I found for the autocomplete (This is awsome as well.) When I create a datum object and try to reference from spreadsheet,
it chashes if I type the alias/reference needed. If I scroll down and select it with a mouse it works. Had a few cursing moements until I figured that out :D . Everywhere else seem to work appart from datum features.
Can you please provide more details? Is this crash repeatable? Which type of datum you are using. A sample file maybe. Please post your FreeCAD about information. I can't reproduce it on my computer.
OK. So I made a video to demonstrate. When I create datum objects. Lines or Planes it always happens. If I scroll down and locate that alias, click on it with a mouse it works. But if I type to quicksearch it crashes. Everywhere elese works fine. But when I do datum objects it crashes.
https://mypreciouscloud.co.uk/index.php ... 73L7nZFHio

OS: Windows 10 (10.0)
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.19.20886 +2271 (Git)
Build type: Release
Branch: LinkStage3
Hash: bea5c37508390dfe23090dabac023fc3d52109fd
Python version: 3.6.8
Qt version: 5.12.1
Coin version: 4.0.0a
OCC version: 7.3.0
Locale: English/United Kingdom (en_GB)

But it does it in linux and older version as well.
realthunder
Veteran
Posts: 2190
Joined: Tue Jan 03, 2017 10:55 am

Re: PR#2862: Configuration Table using Spreadsheet

Post by realthunder »

czinehuba wrote: Wed May 20, 2020 8:22 pm OK. So I made a video to demonstrate. When I create datum objects. Lines or Planes it always happens. If I scroll down and locate that alias, click on it with a mouse it works. But if I type to quicksearch it crashes. Everywhere elese works fine. But when I do datum objects it crashes.
https://mypreciouscloud.co.uk/index.php ... 73L7nZFHio
Image updated with the fix. Thanks for reporting.
Try Assembly3 with my custom build of FreeCAD at here.
And if you'd like to show your support, you can donate through patreon, liberapay, or paypal
User avatar
matthiaswm
Posts: 35
Joined: Wed Nov 18, 2020 11:41 am
Location: Düsseldorf, Germany

Re: PR#2862: Configuration Table using Spreadsheet

Post by matthiaswm »

-alex- pointed me to this PR. Awesome! This is exactly what I was looking for. I am hoping that is is merged into 0.19 soon ;-)

https://forum.freecadweb.org/viewtopic. ... 10#p449462

Thanks for your great work!


Maybe the href() can be solved differently? I am a bit surprised that expressions pointing at the parent cause cyclic dependencies in a DAG. From what I saw in the source, expressions are evaluated on a node-by-node (App::DocumentObject) base. Can't they be evaluated on a need-to-know base? For example, an Object Property requires some value, and by parsing the expression, all InData is calculated recursively (unless marked final). Cyclic dependencies would still be possible and need to create an error, but the expression graph could be completely independent of the scene graph. - But maybe I am just reading the code wrong?! Just started to wrap my head around it two days ago ;-)
realthunder
Veteran
Posts: 2190
Joined: Tue Jan 03, 2017 10:55 am

Re: PR#2862: Configuration Table using Spreadsheet

Post by realthunder »

matthiaswm wrote: Thu Nov 19, 2020 8:21 pm Maybe the href() can be solved differently? I am a bit surprised that expressions pointing at the parent cause cyclic dependencies in a DAG. From what I saw in the source, expressions are evaluated on a node-by-node (App::DocumentObject) base. Can't they be evaluated on a need-to-know base? For example, an Object Property requires some value, and by parsing the expression, all InData is calculated recursively (unless marked final). Cyclic dependencies would still be possible and need to create an error, but the expression graph could be completely independent of the scene graph. - But maybe I am just reading the code wrong?! Just started to wrap my head around it two days ago ;-)
It has to do with how FreeCAD document recomputes, which is done object by object, sorted by their dependency order. And the dependency is established by PropertyLinkBase derived properties inside the object. The are two properties that can hold expressions, and they can establish dependencies just like normal link type properties. The parent child relationship you see in the tree view is normally established with the parent having a regular link type property that holds a link to the child object. And it usually means that the parent needs the child to recompute first in order to obtain something from the child for itself to recompute, like a Fusion object requires its child shape to be calculated first. Therefore, an expression from the child pointing to the parent will create a cycle, as it means the child require something from the parent that may not be available before it has done recompute. However, this assumption is over restrictive in many cases. as most properties of an object are only meant to be changed by the user, not by the object itself during recomputation.

Ideally, recomputation and sorting should be done property by property across all objects, but that'll require a much larger change, and is probably an overkill.
Try Assembly3 with my custom build of FreeCAD at here.
And if you'd like to show your support, you can donate through patreon, liberapay, or paypal
User avatar
matthiaswm
Posts: 35
Joined: Wed Nov 18, 2020 11:41 am
Location: Düsseldorf, Germany

Re: PR#2862: Configuration Table using Spreadsheet

Post by matthiaswm »

Thanks for the great explanation. Yes, that would be a major change.

I have not looked at the solution to the Topological naming problem yet, but parts of it could be solved by storing expressions in a precompiled manner with pointers instead of named dependencies, which would then also make the expression dependency altogether easy to follow, making this previously major change a rather minor part of the other.

Sorry, I am getting ahead of myself. I have not verified any of that in the source code. ;-)
Post Reply