Could we get a simple path description of Link, 019, Link stage, Asm3, merge?

Have some feature requests, feedback, cool stuff to share, or want to know where FreeCAD is going? This is the place.
Forum rules
Be nice to others! Read the FreeCAD code of conduct!
freedman
Posts: 1268
Joined: Thu Mar 22, 2018 3:02 am
Location: Washington State, USA

Could we get a simple path description of Link, 019, Link stage, Asm3, merge?

Postby freedman » Sat Aug 24, 2019 5:46 pm

I'm dizzy when it comes to reading all the post and topics about what comes next. I feel like It's my fault because I can't keep up but the developers are moving fast. A couple questions:

1) Is there just one Link going on, I see many different words used.
2) Just to verify, Link is a piece of code from realthunder merged with 0.19? I think that's correct.
3) Is something going to be replaced, Asm3, 0.19?
4) I have seen Link, Link Stage, App::link, merge, link merge, ect. Is there a formal wording yet that I can use to search?
5) Are file types (structure) in question on this new path?
6) What should I be testing, I feel like 0.19 isn't going to be around long?
7) If everything goes as planned what piece of code will FreeCAD be in 6 months.

Maybe this needs a sticky, maybe there is one.

Thanks, amazing efforts........
vocx
Posts: 3357
Joined: Thu Oct 18, 2018 9:18 pm

Re: A simple path description of Link, 019, Link stage, Asm3, merge?

Postby vocx » Sat Aug 24, 2019 7:05 pm

freedman wrote:
Sat Aug 24, 2019 5:46 pm
I'm dizzy when it comes to reading all the post and topics about what comes next. ...
You really need to read carefully this thread App::Link: the big merge, and the information provided in realthunder's wiki in GitHub: Link and Core Changes. Most of that is developers documentation, it is not meant to be understood by common users, but by other developers.
2) Just to verify, Link is a piece of code from realthunder merged with 0.19? I think that's correct.
Yes.
3) Is something going to be replaced, Asm3, 0.19?
Code is being added, not replaced.
4) I have seen Link, Link Stage, App::link, merge, link merge, ect. Is there a formal wording yet that I can use to search?
"Link", or more formally "App::Link", is a new type of "object", or more formally, a FreeCAD "App::DocumentObject". Everything that you create in FreeCAD, a line, a body, a part, a group, a Wall, an array, etc., is a "DocumentObject". "Link" is a special type of object with certain properties that will hopefully allow for doing assemblies easier.

During development, realthunder had various Git branches named "Link", "LinkDev", "LinkStage", "LinkStage2", "LinkStage3", etc., so people referred to "realthunder's work" in various ways, by the name of the feature "Link", or by the branch's name. Git is used by the FreeCAD programmers to manage code; "branch" is a term used a lot in Git. If you don't know Git, you can read more about it in the wiki, source code management.

The branch that was just merged into the official FreeCAD code, with pull request #2350, was LinkMerge, which some people called just "Merge", or "Merge3", referring to the version of realthunder's "LinkStage3".
5) Are file types (structure) in question on this new path?
What does this even mean?
6) What should I be testing, ...
"Link" by itself is an internal piece of code that will have use in assembly (and some other cases). As a common user, you don't need to test anything in particular. Just test FreeCAD in general; test that everything works as good as it was before the big merge. The "LinkMerge" branch introduced more than the "Link" object; it also made many small changes to the core of FreeCAD (again see Link and Core Changes). So just test that everything works as you expect.
I feel like 0.19 isn't going to be around long?
What? Why? FreeCAD 0.19 is a development version. It isn't even "released" at the moment, so it cannot "go away" before it has arrived. When FreeCAD 0.19 is released (maybe around May 2020, just like the previous versions of FreeCAD have been released in that time), it will become the latest official FreeCAD version. In that moment development will just continue with the v0.20 version.
7) If everything goes as planned what piece of code will FreeCAD be in 6 months.
Just what you see now, but better? Right now it's the moment to test FreeCAD 0.19 in general, and report bugs. Obviously the big merge of "LinkMerge" is disruptive, and brings some problems that are currently being addressed by the developers. Realthunder already submitted pull request #2449 to solve many small bugs found in the last few days. Hopefully things stabilize in the next few months, so when 2020 comes the entire FreeCAD codebase is more stable and the release of 0.19 goes smoothly.
What is Assembly3?
"Assembly3" is an assembly workbench written in Python that realthunder developed, that depends on the "Link" functionality that he also created. Assembly3 is still not officially merged into FreeCAD. However, since "Link" was already integrated into FreeCAD, it's just a matter of time for Assembly3 to be provided, either officially or as an installable add-on, just like A2plus Workbench is provided currently.
How do I use Assembly3?
Last edited by vocx on Wed Sep 11, 2019 7:05 am, edited 2 times in total.
Always add the important information to your posts if you need help.
To support the documentation effort, and code development, your donation is appreciated: paypal.
freedman
Posts: 1268
Joined: Thu Mar 22, 2018 3:02 am
Location: Washington State, USA

Re: Could we get a simple path description of Link, 019, Link stage, Asm3, merge?

Postby freedman » Sat Aug 24, 2019 7:30 pm

I feel like 0.19 isn't going to be around long?
What? Why? FreeCAD 0.19 is a development version.
Are file types (structure) in question on this new path?
What does this even mean?[/quote]

I thought Link was a possible branch but instead it is incorporation into the current working version. I was wondering about file compatibility. I see now, not an issue.

Thank you, I get it..
vocx
Posts: 3357
Joined: Thu Oct 18, 2018 9:18 pm

Re: Could we get a simple path description of Link, 019, Link stage, Asm3, merge?

Postby vocx » Sat Aug 24, 2019 9:50 pm

freedman wrote:
Sat Aug 24, 2019 7:30 pm
... I was wondering about file compatibility. I see now, not an issue.
If something major like breaking file compatibility was going to happen, you can bet that it would be announced prominently. When FreeCAD transitioned from 0.16 to 0.17 (after 1.5 years in development), the change in behavior of the PartDesign Workbench was mentioned a lot, in the wiki and elsewhere, and everybody was urged to upgrade their work. And code was added to upgrade some objects from the older workflow to the new workflow. The files of 0.16 were still compatible with 0.17, though.

The "Link" functionality has been in development for around 2.5 years Even if the first pull request occurred in July 2017 (it wasn't merged), it took two more years of discussions and refinement to make the "Link" concept available in today's official code. A lot of care was taken to make sure it didn't completely break the operation of FreeCAD. The fact that it was just merged in the middle of this development cycle with minimal issues is a success on its own.
Always add the important information to your posts if you need help.
To support the documentation effort, and code development, your donation is appreciated: paypal.
triplus
Posts: 9278
Joined: Mon Dec 12, 2011 4:45 pm

Re: Could we get a simple path description of Link, 019, Link stage, Asm3, merge?

Postby triplus » Sat Aug 24, 2019 11:34 pm

From user point of view try to recreate this, that is what App::Link effort is about:

Image

P.S. It's not about recreating the FreeCAD logo, and yes you can use the Part Box instead.
chrisb
Posts: 22597
Joined: Tue Mar 17, 2015 9:14 am

Re: Could we get a simple path description of Link, 019, Link stage, Asm3, merge?

Postby chrisb » Sun Aug 25, 2019 10:06 am

A link to an external file can be created as follows. Imagine an object "source" which is the unique thing that should be linked one or more times. And we have a model "target" where we want to reuse the object "source"

- Preparation: select Menu->View->TreeView actions->Multi document or Menu->View->TreeView actions->Collapse/Expand

- in source: select from right mouse button menu of the object LinkActions->MakeLink
this creates a link object in the source model

- drag and drop that link object into target model.
freedman
Posts: 1268
Joined: Thu Mar 22, 2018 3:02 am
Location: Washington State, USA

Re: Could we get a simple path description of Link, 019, Link stage, Asm3, merge?

Postby freedman » Mon Aug 26, 2019 1:44 am

Thanks all, I tried what chrisb wrote and I got a black object ( object copy) on the screen, weird, but it doesn't matter I will go read up on what's up and report back.

One question; Do you think this will have an impact on current/older macros, is placing objects in new containers going to affect the code structure?

Thanks all, wow! I can see many changes already.
User avatar
bejant
Posts: 6061
Joined: Thu Jul 11, 2013 3:06 pm

Re: Could we get a simple path description of Link, 019, Link stage, Asm3, merge?

Postby bejant » Mon Aug 26, 2019 2:04 am

I really like the questions and the answers in this topic. I wonder if there should be an Assembly section of the forum, and if this should be the first pinned topic (sticky)?
Jee-Bee
Posts: 1992
Joined: Tue Jun 16, 2015 10:32 am
Location: Netherlands

Re: Could we get a simple path description of Link, 019, Link stage, Asm3, merge?

Postby Jee-Bee » Mon Aug 26, 2019 4:27 am

there is one ... at least as long as i'm here...
chrisb
Posts: 22597
Joined: Tue Mar 17, 2015 9:14 am

Re: Could we get a simple path description of Link, 019, Link stage, Asm3, merge?

Postby chrisb » Mon Aug 26, 2019 9:07 am

I created a new topic about using Links in PartDesign bodies.