Part::Compound / Compound: Links go out of the allowed scope

Post here for help on using FreeCAD's graphical user interface (GUI).
Forum rules
and Helpful information
IMPORTANT: Please click here and read this first, before asking for help

Also, be nice to others! Read the FreeCAD code of conduct!
User avatar
iogui
Posts: 95
Joined: Tue Mar 19, 2019 3:44 pm
Location: São Paulo
Contact:

Part::Compound / Compound: Links go out of the allowed scope

Postby iogui » Mon Apr 22, 2019 11:24 pm

I'm trying to understand this error that is happening when I'm trying to make a compound of many Parts in a document to be able to move then all together as an unique module to a different location in my document.

My steps are:

1) Select all objects
2) Click on button make compound on Part Workbench

The results:

1) Python console prints:

>>> App.activeDocument().Compound.Links = [App.activeDocument().Box003,App.activeDocument().Box004,App.activeDocument().Box005,App.activeDocument().Box007,App.activeDocument().Box008,App.activeDocument().Box009,App.activeDocument().Box010,App.activeDocument().Box011,App.activeDocument().Body004,App.activeDocument().Box012,App.activeDocument().Box013,App.activeDocument().Box014,App.activeDocument().Box015,App.activeDocument().Box016,App.activeDocument().Box025,App.activeDocument().Box026,App.activeDocument().Box027,App.activeDocument().Box028,App.activeDocument().Box017,App.activeDocument().Box018,App.activeDocument().Box019,App.activeDocument().Box020,App.activeDocument().Box021,App.activeDocument().Box022,App.activeDocument().Box023,App.activeDocument().Box024,App.activeDocument().Body005,App.activeDocument().Pad006,App.activeDocument().Box029,App.activeDocument().Box030,App.activeDocument().Box033,App.activeDocument().Box035,App.activeDocument().Body006,App.activeDocument().Pad007,App.activeDocument().Box036,App.activeDocument().Pad005,]
>>> App.ActiveDocument.recompute()

2) Report View prints:

Part::Compound / Compound: Links go out of the allowed scope

3) The resulting compound has a different shape then the isolated objects in it's original positions, some parts seems to be mixed and some go to a different position

4) By running check geometry against the generated compound, I get a lot of self intersect errors.

Now, there goes my questions:

1) What does it means in this case the error "Links go outo of the allowed scope"?
2) From my newbie point of view, I was trying to do something that should be trivial: to group different 3D objects together to be able to move it together to another coordinate. And I can easily do this kind of things in other 3D modelling softwares. Am I doing it the wrong way in FreeCAD?
3) Are the geometry errors happening because of that coplanar / cotangent issues in Boolean operations? (those issues are been a torn on my side!)
4) What is the better way to achieve what I'm trying to do on FreeCAD?

The file:
teste_compound.FCStd
File where I'm trying to make a compound
(71.04 KiB) Downloaded 12 times
-----------------------------------------

OS: Ubuntu 16.04.6 LTS
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.18.1.
Build type: Release
Python version: 2.7.12
Qt version: 4.8.7
Coin version: 4.0.0a
OCC version: 7.3.0
Locale: Portuguese/Brazil (pt_BR)
Be the change you want to see in the world. - Mahatma Gandhi
chrisb
Posts: 25681
Joined: Tue Mar 17, 2015 9:14 am

Re: Part::Compound / Compound: Links go out of the allowed scope

Postby chrisb » Tue Apr 23, 2019 12:03 am

iogui wrote:
Mon Apr 22, 2019 11:24 pm
1) What does it means in this case the error "Links go outo of the allowed scope"?
You have references between the outside of a body to a feature inside (or vice versa)

2) From my newbie point of view, I was trying to do something that should be trivial: to group different 3D objects together to be able to move it together to another coordinate. And I can easily do this kind of things in other 3D modelling softwares. Am I doing it the wrong way in FreeCAD?
Yes. You must not include a body and a feature inside of a body. I doubt that this is possible in all other modelling softwares.

3) Are the geometry errors happening because of that coplanar / cotangent issues in Boolean operations? (those issues are been a torn on my side!)
no Errors shown by Part->CheckGeometry are often caused by coplanar / cotangent issues. However, they are not at all connetced to the "links go out of allowed scope" messages.

4) What is the better way to achieve what I'm trying to do on FreeCAD?
Fusion only the bodies, never any features.

Edit: changed answer to question 3
vocx
Posts: 4604
Joined: Thu Oct 18, 2018 9:18 pm

Re: Part::Compound / Compound: Links go out of the allowed scope

Postby vocx » Tue Apr 23, 2019 12:39 am

iogui wrote:
Mon Apr 22, 2019 11:24 pm

Code: Select all

...
App.activeDocument().Box024,App.activeDocument().Body005,App.activeDocument().Pad006,... App.activeDocument().Body006,App.activeDocument().Pad007,App.activeDocument().Box036,App.activeDocument().Pad005,]
It seems you are selecting the "Pads". You should select only the Bodies or Boxes, because these are the top-most solids.

The Pad is a "feature". But what you want to compound is the entire PartDesign Body that contains that feature.

This seems to work

Code: Select all

App.activeDocument().addObject("Part::Compound","Compound")

App.activeDocument().Compound.Links = [App.activeDocument().Box003, App.activeDocument().Box004, App.activeDocument().Box005,
App.activeDocument().Box007, App.activeDocument().Box008, App.activeDocument().Box009, App.activeDocument().Box010,
App.activeDocument().Box011, App.activeDocument().Body004, App.activeDocument().Box012, App.activeDocument().Box013,
App.activeDocument().Box014, App.activeDocument().Box015, App.activeDocument().Box016, App.activeDocument().Box025,
App.activeDocument().Box026, App.activeDocument().Box027, App.activeDocument().Box028, App.activeDocument().Box017,
App.activeDocument().Box018, App.activeDocument().Box019, App.activeDocument().Box020, App.activeDocument().Box021,
App.activeDocument().Box022, App.activeDocument().Box023, App.activeDocument().Box024, App.activeDocument().Body005,
App.activeDocument().Box029, App.activeDocument().Box030, App.activeDocument().Box033,
App.activeDocument().Box035, App.activeDocument().Body006, App.activeDocument().Box036]

App.ActiveDocument.recompute()
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.
User avatar
iogui
Posts: 95
Joined: Tue Mar 19, 2019 3:44 pm
Location: São Paulo
Contact:

Re: Part::Compound / Compound: Links go out of the allowed scope

Postby iogui » Tue Apr 23, 2019 12:53 am

chrisb wrote:
Tue Apr 23, 2019 12:03 am
You have references between the outside of a body to a feature inside (or vice versa)
Can you please elaborate? What do you mean by saying a "feature inside a body"? I have a spreadsheet with central information that is referenced by the sketches and pads of a body and by boxes outside of bodies. Some of this is forbidden? If so, can't I have a central place with information that can be referenced everywhere? (If not, than is not possible for all objects to be really parametric as some of the things will have to be changed in more than one place and that's what I'm trying to avoid)
chrisb wrote:
Tue Apr 23, 2019 12:03 am
Yes. You must not include a body and a feature inside of a body. I doubt that this is possible in all other modelling softwares.
FreeCAD is the only software that I've already worked that is intended to be parametric. The other ones (that I've already worked) allows me to work better with mouse so that's not really an issue on then 'cause the better support for mouse operations allows me to be more productive.
chrisb wrote:
Tue Apr 23, 2019 12:03 am
Fusion only the bodies, never any features.
Please forgive-me if I'm asking dumb questions but here too I will need some clarification. What do you mean by "feature" in opposition of bodies?
Can I assume when you are saying "Fusion" that you are referring to the "Make compound" operation, am I right? My use case is: I want to easily move a group of different 3D objects from one place to another. Is the "Make compound" the only way to achieve this? If no, is it the better way?
Be the change you want to see in the world. - Mahatma Gandhi
User avatar
iogui
Posts: 95
Joined: Tue Mar 19, 2019 3:44 pm
Location: São Paulo
Contact:

Re: Part::Compound / Compound: Links go out of the allowed scope

Postby iogui » Tue Apr 23, 2019 12:55 am

vocx wrote:
Tue Apr 23, 2019 12:39 am
iogui wrote:
Mon Apr 22, 2019 11:24 pm

Code: Select all

...
App.activeDocument().Box024,App.activeDocument().Body005,App.activeDocument().Pad006,... App.activeDocument().Body006,App.activeDocument().Pad007,App.activeDocument().Box036,App.activeDocument().Pad005,]
It seems you are selecting the "Pads". You should select only the Bodies or Boxes, because these are the top-most solids.

The Pad is a "feature". But what you want to compound is the entire PartDesign Body that contains that feature.

This seems to work

Code: Select all

App.activeDocument().addObject("Part::Compound","Compound")

App.activeDocument().Compound.Links = [App.activeDocument().Box003, App.activeDocument().Box004, App.activeDocument().Box005,
App.activeDocument().Box007, App.activeDocument().Box008, App.activeDocument().Box009, App.activeDocument().Box010,
App.activeDocument().Box011, App.activeDocument().Body004, App.activeDocument().Box012, App.activeDocument().Box013,
App.activeDocument().Box014, App.activeDocument().Box015, App.activeDocument().Box016, App.activeDocument().Box025,
App.activeDocument().Box026, App.activeDocument().Box027, App.activeDocument().Box028, App.activeDocument().Box017,
App.activeDocument().Box018, App.activeDocument().Box019, App.activeDocument().Box020, App.activeDocument().Box021,
App.activeDocument().Box022, App.activeDocument().Box023, App.activeDocument().Box024, App.activeDocument().Body005,
App.activeDocument().Box029, App.activeDocument().Box030, App.activeDocument().Box033,
App.activeDocument().Box035, App.activeDocument().Body006, App.activeDocument().Box036]

App.ActiveDocument.recompute()
Yes, you're right!!... However the message "Part::Compound / Compound: Links go out of the allowed scope" is still been written in the report view. Is it safe to ignore it?
Be the change you want to see in the world. - Mahatma Gandhi
User avatar
iogui
Posts: 95
Joined: Tue Mar 19, 2019 3:44 pm
Location: São Paulo
Contact:

Re: Part::Compound / Compound: Links go out of the allowed scope

Postby iogui » Tue Apr 23, 2019 12:58 am

iogui wrote:
Tue Apr 23, 2019 12:55 am
It seems you are selecting the "Pads". You should select only the Bodies or Boxes, because these are the top-most solids.

The Pad is a "feature". But what you want to compound is the entire PartDesign Body that contains that feature.

This seems to work
...hum... but there still are geometry errors in the resulting compound!
Be the change you want to see in the world. - Mahatma Gandhi
vocx
Posts: 4604
Joined: Thu Oct 18, 2018 9:18 pm

Re: Part::Compound / Compound: Links go out of the allowed scope

Postby vocx » Tue Apr 23, 2019 1:01 am

iogui wrote:
Tue Apr 23, 2019 12:55 am
Yes, you're right!!... However the message "Part::Compound / Compound: Links go out of the allowed scope" is still been written in the report view. Is it safe to ignore it?
I don't get this message.

Is it an error (red text)? Or a warning (yellow text)? If it's a warning, you can usually ignore it.

Clear your Python console and report view, and try again.

If you already created a compound, delete it and try again.
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.
User avatar
iogui
Posts: 95
Joined: Tue Mar 19, 2019 3:44 pm
Location: São Paulo
Contact:

Re: Part::Compound / Compound: Links go out of the allowed scope

Postby iogui » Tue Apr 23, 2019 1:25 am

vocx wrote:
Tue Apr 23, 2019 1:01 am
I don't get this message.

Is it an error (red text)? Or a warning (yellow text)? If it's a warning, you can usually ignore it.
A yellow message.
vocx wrote:
Tue Apr 23, 2019 1:01 am
Clear your Python console and report view, and try again.

If you already created a compound, delete it and try again.
Right, I've followed your instructions and the message is not been printed anymore but when I do a check geometry analysis on the resulting compound there are lots of self intersect errors. You don't get those errors?
Be the change you want to see in the world. - Mahatma Gandhi
jmaustpc
Posts: 9849
Joined: Tue Jul 26, 2011 6:28 am
Location: Australia

Re: Part::Compound / Compound: Links go out of the allowed scope

Postby jmaustpc » Tue Apr 23, 2019 2:03 am

iogui wrote:
Tue Apr 23, 2019 12:53 am
Can you please elaborate? What do you mean by saying a "feature inside a body"?
iogui wrote:
Tue Apr 23, 2019 12:53 am
Please forgive-me if I'm asking dumb questions but here too I will need some clarification.
i wouldn't mind you asking a stupid question if you had first read the wiki, searched for the 1000 other times the same question has been asked, did not make a claim about "all the other" software you use sounding like you think you are some sort of expert and then later something like" I've never used another parametric...".

the wiki is far from perfect or complete but still contains an astonishing amount of knowledge. Read and understand the PartDesign Workbench in the wiki, it will answer many of your questions.

The general workflow intention of PartDesign is to create solids (the single contiguous solid is called a "body" and they are formed from a set of features) and then use the Official assembly workbench to position those solids with tools and constraints etc.....the Assembly WB has been planned for years but is not there yet. You can do various manual assemblies or other work arounds etc.
User avatar
iogui
Posts: 95
Joined: Tue Mar 19, 2019 3:44 pm
Location: São Paulo
Contact:

Re: Part::Compound / Compound: Links go out of the allowed scope

Postby iogui » Tue Apr 23, 2019 2:42 am

jmaustpc wrote:
Tue Apr 23, 2019 2:03 am
i wouldn't mind you asking a stupid question if you had first read the wiki
I had already done so. But the doubts still persisted.
jmaustpc wrote:
Tue Apr 23, 2019 2:03 am
searched for the 1000 other times the same question has been asked
I've also searched before asking and hadn't find nothing about my specific use case.
jmaustpc wrote:
Tue Apr 23, 2019 2:03 am
did not make a claim about "all the other" software you use sounding like you think you are some sort of expert and then later something like" I've never used another parametric...".
Please forgive me. I'm really sorry if I've sounded like that. It was not my intention. I'm not an expert in parametric 3D modelling software and I'm also not an expert in 3D modelling without parametric but I've made things in other 3D modelling tools that are similar to what I'm trying to do in FreeCAD. However those softwares are not parametric. They are softwares more focused in 3D modelling for furniture design and they are my references as what I'm trying to do in FreeCAD is furniture design.
In fact, I'm very new to 3D modelling but I'm a software engineer expert (new to python programming though... but I'm pretty sure I can learn it pretty fast).
I'm just trying to learn all I can from FreeCAD and 3D modelling before putting my hands on it's code to build things that will allow people from woodworking area be able to use FreeCAD for building furniture. I think FreeCAD is great an very promising but I see that it still have it's limitations.
And also, I'm not a native english speaker so, I'm making some effort to communicate. If anything that I say sounds offensive to anyone, please forgive me. You can tell me as you are doing now and I will do my best to correct myself.
jmaustpc wrote:
Tue Apr 23, 2019 2:03 am
The general workflow intention of PartDesign is to create solids (the single contiguous solid is called a "body" and they are formed from a set of features) and then use the Official assembly workbench to position those solids with tools and constraints etc....
I had already understood what the PartDesign workbench is and what it was meant to do although I'm still learning it and some of the nomenclature you use still confuses me. I was thinking that a body indeed was a feature too.
If you've looked at my file, you may have seen that I've built some parts by using PartDesign and some by using simple part boxes as they are more easy for building more simple parts.
I've also gave a look at Assembly 2 workbench but I'm still not using it because I didn't find it would really help me with what I'm trying to do now.
Be the change you want to see in the world. - Mahatma Gandhi