Assembly3 preview

Discussion about the development of the Assembly workbench.
User avatar
Zolko
Posts: 1425
Joined: Mon Dec 17, 2018 10:02 am

Re: Assembly3 preview

Postby Zolko » Fri Jul 09, 2021 9:42 pm

M4x wrote: Fri Jul 09, 2021 8:31 pm Is this the "best" way to do it or should I've done something differently?
did you try with a circular array ?
try the Assembly4 workbench for FreCAD v0.19
install with Tools > Addon Manager > Assembly4 — tutorials here and here
realthunder
Posts: 2000
Joined: Tue Jan 03, 2017 10:55 am

Re: Assembly3 preview

Postby realthunder » Sun Jul 11, 2021 6:57 am

M4x wrote: Fri Jul 09, 2021 8:31 pm I was able to adapt this workaround for one screw. But since I've used PartDesign_PolarPattern, I didn't have a sketch for the other two holes already. Therefore I've added datum planes, used the holes to align the planes and created sketches to use them within Assembly 3 to align the two other screws:

Is this the "best" way to do it or should I've done something differently?
There are other ways, but probably not better in comparison. If you are using my release, the PartDesign there allows you to create multiple solid that are independent with each other. So you can just make a new solid with another polar pattern on the pocket feature, which will give you three cylinders.

You can also create the element with the sketch, and manually adjust the element's Offset property to move it to the other hole. And then create another one, do the same.

Or just do what Zolko says, using a draft polar array, but that require you to wrap the array and the body into a sub assembly before use.
Try Assembly3 (latest version 0.11) along 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
Cyclonit
Posts: 47
Joined: Sat Sep 26, 2020 11:19 am
Location: Germany

Re: Assembly3 preview

Postby Cyclonit » Wed Jul 21, 2021 3:44 pm

Hi,

I've created a parametric design for an ISO 7045 torx screw. All of the variables belong to a spreadsheet in the file and I am using the enumeration/property table feature to select values from the spreadsheet.

Whenever I recompute the model I get the following errors:

Code: Select all

17:43:09  <Exception> PropertyStandard.cpp(604): PropertyEnumeration Torx_Screw#Body.Length expects type in list to be string, not Base.Quantity
in binding '.Length.Enum'
17:43:09  Recompute failed! Please check report view.
Attachments
Torx Screw.FCStd
(21.73 KiB) Downloaded 3 times
realthunder
Posts: 2000
Joined: Tue Jan 03, 2017 10:55 am

Re: Assembly3 preview

Postby realthunder » Thu Jul 22, 2021 2:52 am

Cyclonit wrote: Wed Jul 21, 2021 3:44 pm Hi,

I've created a parametric design for an ISO 7045 torx screw. All of the variables belong to a spreadsheet in the file and I am using the enumeration/property table feature to select values from the spreadsheet.

Whenever I recompute the model I get the following errors:

Code: Select all

17:43:09  <Exception> PropertyStandard.cpp(604): PropertyEnumeration Torx_Screw#Body.Length expects type in list to be string, not Base.Quantity
in binding '.Length.Enum'
17:43:09  Recompute failed! Please check report view.
Currently, Enum binding only accept string in the list. I'll change that later. Meanwhile, you can manually change the spreadsheet to make the content in the cells as string instead of quantity. So instead of =1mm, change it to '1mm, i.e. proceed the content with a single quote to force the cell to be interpreted as plain text.
Try Assembly3 (latest version 0.11) along 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
Cyclonit
Posts: 47
Joined: Sat Sep 26, 2020 11:19 am
Location: Germany

Re: Assembly3 preview

Postby Cyclonit » Thu Jul 22, 2021 7:49 am

realthunder wrote: Thu Jul 22, 2021 2:52 amCurrently, Enum binding only accept string in the list. I'll change that later. Meanwhile, you can manually change the spreadsheet to make the content in the cells as string instead of quantity. So instead of =1mm, change it to '1mm, i.e. proceed the content with a single quote to force the cell to be interpreted as plain text.
This works inside of file I shared. But it breaks when linking the part in a different file. Steps to reproduce:

1. In a different file, click "Link Actions -> Make Link"
create_link.png
create_link.png (16.54 KiB) Viewed 303 times
2. In the link, select the part "ISO 7045" from its file and set "Link Copy on Change" to "Enabled".
link.png
link.png (18.07 KiB) Viewed 303 times
3. Change any parameter on the link.
broken.png
broken.png (12.65 KiB) Viewed 303 times

The last step results in FreeCAD creating a copy of the source part and its spreadsheet in the assembly file. The copied spreadsheet doesn't maintain the "'3mm" format, but converts every instance of "<integer>mm" into an actual value, thus breaking the copy of the part.
realthunder
Posts: 2000
Joined: Tue Jan 03, 2017 10:55 am

Re: Assembly3 preview

Postby realthunder » Thu Jul 22, 2021 8:28 am

Cyclonit wrote: Thu Jul 22, 2021 7:49 am This works inside of file I shared. But it breaks when linking the part in a different file. Steps to reproduce:
You have just uncovered a rather obscure bug in Spreadsheet. I have fixed it. You can prepend the cell content with some arbitrary alphabet to work around it.
Try Assembly3 (latest version 0.11) along 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
Cyclonit
Posts: 47
Joined: Sat Sep 26, 2020 11:19 am
Location: Germany

Re: Assembly3 preview

Postby Cyclonit » Thu Jul 22, 2021 9:13 am

realthunder wrote: Thu Jul 22, 2021 8:28 am
Thank you very much for the quick fix. I guess it will be part of the next daily build?

On a different note, have you considered hiding the "shadow copies" created by links from the tree view? I don't see any immediate reason to have them there and they add a lot of clutter. Maybe you could put them into a sub-folder such that they remain accessible without being a hassle. On that note it might be a good idea to group all copies originating from the same link. As you can see in my example, each link creates a copy of the part and its spreadsheet. Thus I end up having lots of spreadsheets called "Vars00x" in my tree view.
realthunder
Posts: 2000
Joined: Tue Jan 03, 2017 10:55 am

Re: Assembly3 preview

Postby realthunder » Thu Jul 22, 2021 9:51 am

Cyclonit wrote: Thu Jul 22, 2021 9:13 am On a different note, have you considered hiding the "shadow copies" created by links from the tree view?
There are two ways to 'hide' it. One, simply right click the make this behavior default somehow. The copied object may be grouped by other object, and hiding it will hide all occurrences.

Second way is to set 'Show Item' property of the Link to 'False', and set 'Element Count' to one. This will create a link array with one element, hence grouping the linked object under the link.
Try Assembly3 (latest version 0.11) along 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
Cyclonit
Posts: 47
Joined: Sat Sep 26, 2020 11:19 am
Location: Germany

Re: Assembly3 preview

Postby Cyclonit » Thu Jul 22, 2021 11:14 am

realthunder wrote: Thu Jul 22, 2021 9:51 am
Thank you very much, that works great. Now I can start utilizing the parameterized parts properly.

From a UX perspective, I believe the best approach would be to group the shadow copies under the link object as shown below. This way they are properly associated with the link instead of being seemingly unrelated. This way, the copies would also end up in the same groups as their respective links. Though I assume this would require a new kind of container object.