Assembly 4 workbench

This works for me, but the assembly seem to keep a reference to the old inserted/linked model, so when I reopen the assembly it opens also the old model. Renaming the old model on disk gives an error when opening the assembly:
File ‘C:…/glass_adhesive_C.FCStd’ does not exist!
11:55:28 Exception opening file: C:…/glass_adhesive_C.FCStd [File ‘C:…/glass_adhesive_C.FCStd’ does not exist!]

What I did was:

  1. Copy my model on disk glass_adhesive_C.FCStd to glass_adhesive_D.FCStd
  2. Opened the assembly and changed the linked object in the property list from “C” to “D”.

It looks like there is no reference in the assembly tree to revision C of the model but there is some strange name when I look at “Assembly → Edit placement of part”. In the dialog box “Place linked part” the Selected Link: text shows “Glass Adhesive D new (Glass_Adhesive_C)”. Note that I changed the name of the link in the assembly tree to “Front Adhesive D new”.

When I make changes to the D revision of the model the changes show up in the assembly as expected.

Why can’t I delete revision C from the disk without FreeCAD complaining?

actually, yes, there is now a better way than the built-in FreeCAD method: if you select a broken link, and choose “Insert Part” (as for a new link) then the GUI allows you to choose a new target for the same existing link. But it only works for broken links, if you want to replace a valid target with a new one then this doesn’t do it, you need to use the FreeCAD method as described (but it has some pit-falls if you don’t do it correctly)



let it complain and assign a new target for the link

Why can’t I delete revision C from the disk without FreeCAD complaining?
[/quote]
let it complain and assign a new target for the link
[/quote]

How is the references stored in the assembly file? File name, part name, LCS name + offset and rotation? When I looked inside the FreeCAD file (the unzipped XML) after assigning a new target for the link I still found traces of the old target in the file and that might explain why FreeCAD is complaining though the assembly is not pointing to the old file anymore.

When I update a “sub part” without opening one of the assemblies that it is included in, am I free to change the Part name?

there are several references: one is the target object of the link, and then there are the target LCS(s) that reference the placement(s).

Dear Zolko,

maybe there is the answer in the main thread but I didn’t find it.
I’m a big fan of the performances the asm4 is able to reach, by the way I prefer the asm2+ workflow as it is the same as solidworks even if it become slow quite soon as the complexity of the asm arises.
The main cons I found in asm4 that avoid me to switch from asm2+ to asm4 is the need to define the reference lcs at design time in the parts.
Not always I’m aware on how that part will be joined, this forces me to reopen parts, add an lcs where needed then save it.
My question is: are You planning the ability to add lcs to the linked parts during assembly in the assembly file? If not, do You think it is feasable?

Best Regards

Turro

this is how T-Flex does it, and it’s indeed very nice. Unfortunately, it involves opening a new 3D view window (on the linked part) which makes this feature very difficult. Please don’t count on it in a near future

Thanks Zolko,

ok let’s wait for the future.
Hoping the new included assembly workbench will be able to make everyone happy.

Assembly 4 is a no start for me, all black X’es in the workbench icons. When I try and insert a part theres a dialog box behind insert window i cant read
ver .21.1
no idea how to post a screenshot here

Hi, I don’t know if I’m in the right place to ask this.

I’m assembling a CNC, and I was wondering how I could reference these holes on another plate (if that’s possible)
freecad_foto.png

If the parts/bodies are in the same file, you can use a SubShapeBinder. If they are in separate files I think that a SubShapeBinder is a bad design choice (if it is possible) where you create references between files.

I would make the holes with a normal sketches, add one LCS to 1 hole out of 4 and then use Assembly4 to put the pieces together.

For your CNC (you mean a milling machine, a lathe or similar?) this is the right place !!

Assembling complex structures is the purpose of FreeCad-AssemblyWorkbenches.

Impressive examples of assemblies with Assembly4 provided by ppemawm you can study here https://devtalk.freecad.org/t/v021-partdesignassembly4-v0124-atkinson-differential-engine-update/68610/1
or here https://devtalk.freecad.org/t/pd-v021asm4-0502-reverse-engineering-the-f16-main-landing-gear/70163/1 and many other examples.

It’s just a question, how you structure your design in assembly-levels.
Starting with a top-assembly (where the whole machine is presented) and going down into sub-assemblies of single components and/or additional sub-assemblies is my workflow.
My main rule: one component/assembly per FCStd-file, all files kept togehter in one project-directory - like gathering all components (single and already pre-assembled) in a workshop.

You can combine self-designed PartDesign-components (my favorite tool), third-party components by importing STEP-data into FC-files, e.g. motor, gear, hydraulic and/or pneumatic components and so on - everything you can get on supplier-internetsites or part-catalogs like traceparts.

Placing appropriate LCS in your component-designs and everything can be linked together pretty easy

In FreeCAD there are other Assembly Workbenches available - I’ve not much to no experience with Asm3 or A2+ (just to mention them)

Good luck with your CNC and keep us informed

If the parts/bodies are in the same file, you can use a SubShapeBinder. If they are in separate files I think that a SubShapeBinder is a bad design choice (if it is possible) where you create references between files.

I don’t quite understand, but I know it’s me who didn’t explain myself correctly, I have a file, which has references to all the parts (each in separate files)

All 4 blocks, I drew them, so I have all the sketches, all the blocks actually and only one drawing.

I need to bring the flowers of all 4 blocks back to my plate, (in the photo the project has already been assembled with assmbly 4)


I apologize if my English isn’t the best, but I’m using Google translate from Italian to English xD

It’s just a question, how you structure your design in assembly-levels

In reality I still haven’t found my workflow, this is the first project I’ve done with freecad (Before I used fusion 360, and before that AutoCAD) But since I switched to Linux it was the only alternative, Even though I have now learned to really appreciate this software, I WOULD NEVER GO BACK, Very complete for almost anything you want (although I originally created a virtual machine to use fusion on Windows xD)

But to answer your question, for this project I organized the files like this, I divided the CNC into sections, x,y,z axis,Each axis has a file, except for pieces that repeat with each other, (such as linear guides) which have a file dedicated to each piece.

My file structure is as follows:
|-Cnc folder
|__file: assembly CNC (che è appunto la CNC assemblata CNC assembly 4)
|x axis subfolder
|
Z axis subfolder
|-------- y axis subfolder

Dividing into subfolders is useful because you don’t mess with backup copies, and if you have notes or PDFs, for construction it doesn’t “pollute” the entire folder but only the interested part.

In FreeCAD there are other Assembly Workbenches available - I’ve not much to no experience with Asm3 or A2+

Well I tried all 4, assembly 4 seems the most logical to me, A2+ is also very simple, but (from what I remember) if you want to do slightly more complex things (like center an object between 2 objects) it becomes much more complex than it should, Assmbly 4 also doesn’t have the ability to center between 2 objects, let’s be clear, (even if it’s enough to use a pure second as reported but currently only accepts 1) but I think it’s more coherent.

A feature that is missing from assembly 4 (or at least I didn’t find it) is rapid movement, In fusion 360, once the right constraints were applied (which were such as rotation on this pivot, linear movement, etc.) You could move the object directly by clicking on the constrained point and keeping the mouse clicked.

The structure I mean is the way you assemble your components - but your file structure ensures that all files are not spread across your hard disk. At least this is a way to hold all files together in a directory (with sub-directories)

I did some experiments with the components shown in your picture - the first-subassembly is GuideSystem_asm (I assume it’s a sort of guiding) with 2 pcs Rod, 4 pcs GuideBlock and a big plate acting as MachineDummy

The GuideBlock has two LCS concentric to the hole on top and at bottom. The LCS on top will act as connection to the plate on top of this guiding system. I always position the LCS in a way that LCS-x, LCS-y and LCS-z are in the same direction as global axis shown on the screen
GuideBlock_LCS_top_bottom.JPG
The GuideSystem is the starting assembly, each GuideBlock with a LCS on top
GuideSystem.JPG
But this LCS are within body container (or in another assembly) and visible only - Import Datum creates a new coordinate system in the root of the assembly container, that’s superimposed with the LCS of a body, subassembly or similar - the LCS’s with the purple symbol (normally a warning for missing attachment).
Superimposed means that this LCS is always exactly on the same position as the source-LCS, but in assembly-root and therefore available for linking to a higher-level assembly.

Datum import is very easy.
You select a LCS in one of the linked objects (in my example GuideBlock_01), right mouse click opens a drop-down menu, in ‘Assembly’ you select ‘Import Datum object’ and the Import Datum Dialog appear.
ImportDatumDialog.JPG
If you are not happy with the suggested naming you should change it right here and before clicking OK.
This name is immutable - changes of name in ComboView are changing the label only.

You will have a new (kind of ‘floating’ - the purple warning sign is a bit strange) LCS in the root of assembly.
Here an example with changed LCS-names.
LCS_import.JPG
Now the assembly ‘GuideSystem_asm’ has a connection point attached to the bore-center of GuideBlock_01 - in my approach on top and at the bottom of the component (bottom LCS for connecting to the rest of the machine - my MachineDummy)
To create the second and/or more root-LCS the above procedure has to be repeated for each LCS

Finally the plate is on top of the guiding system
GuideSystemWithPlate.JPG
The Datum Import is the key for reuse of LCS in lower-level-components at the actual level of assemly and connect them to the next level - one is not restricted to default LCS or selfdefined ‘hardcoded’ LCS

Hope this info is helpful for you


Additional information and the place where I got in contact with Datum Import → https://devtalk.freecad.org/t/nesting-assemblies/46777/1



Example produced with this FreeCAD-version:

OS: Windows 10 build 19045
Word size of FreeCAD: 64-bit
Version: 0.22.0dev.34367 (Git)
Build type: Release
Branch: master
Hash: e36e16de59dece2d67caf478d25e3a6b825102c6
Python 3.10.12, Qt 5.15.8, Coin 4.0.0, Vtk 9.2.5, OCC 7.6.3
Locale: Austria
Installed mods: 
  * AddonManager
  * Assembly4 0.50.2
  * Draft
  * Fem
  * Idf
  * Import
  * Material
  * Mesh
  * MeshPart
  * Part
  * PartDesign
  * Show
  * Sketcher
  * Spreadsheet
  * Start
  * TechDraw
  * Tux
  * Web

Better to not use Google “Artificial deficiency” and learn a little english, or better to check for typos.

flowers = fiori, holes = fori, so chances are that:

  • you want “make holes” where the block holes are?
  • you have mistyped in Goggle translator.
  • Goggle has misunderstood the phrase with some comical results.

Regards

Italian answer to the poster (not exactly the same, but with same meaning)

In italiano, meglio imparare un pochino di inglese (anche maccheronico) che affidarsi alla “deficienza artificiale” dei traduttori, anche se sono migliorati purtroppo non capiscono gli errori di battitura oppure lavorano all’ingrosso cercando di capire il senso della frase con risultati a volte comici. (traducono fan nel senso di “appassionato” con “ventilatore”).

Presumo che tu intenda “fori” (holes) che probabilmente Goggle ha tradotto interpretato come “fiori” (flowers).

A volte sarebbe meglio ripassare la frase al contrario nel traduttore, per vedere se la conversione funziona, se ci sono errori riformula la frase, l’italiano è flessibile, per cui a volte invertendo un soggetto od un verbo il risultato cambia di molto. (a parte il caso di errori di battitura.)


Nel caso tu voglia fari dei fori in corrispondenza dei fori nei “blocchi di sostegno”, putroppo non è un compito di un “Assembly WB”.

Però puoi sempre trovare un modo, scrivi nel forum italiano, (che io frequento) e ne parliamo lì.

Saluti

Carlo D.

When I open a assembly done in 0.20 in 0.21.1 I get the message in the report view:

Deprecated Asm4 Model detected, this could lead to uncompatibilities

This does not go away when I save and reopen the assembly in 0.21.1

Is there a way around this?

OS: Windows 10 build 19045
Word size of FreeCAD: 64-bit
Version: 0.21.1.33668 +26 (Git)
Build type: Release
Branch: (HEAD detached at 0.21.1)
Hash: f6708547a9bb3f71a4aaade12109f511a72c207c
Python 3.8.10, Qt 5.15.2, Coin 4.0.1, Vtk 8.2.0, OCC 7.6.3
Locale: English/Sweden (en_SE)
Installed mods: 
  * Assembly4 0.50.4
  * fasteners 0.4.67
  * Help 1.0.3
  * InventorLoader 1.4.0
  * kicadStepUpMod 10.20.7
  * Manipulator 1.5.0

A lot of the text written in the Report view does not include file or part name. Would be grate to know what Part and file the information is about.

13:22:10  Check interference works with Asm4 Assemblies and there is none in this file
13:22:21  Check interference works with Asm4 Assemblies and there is none in this file
13:22:24  Check interference works with Asm4 Assemblies and there is none in this file
13:22:27  Check interference works with Asm4 Assemblies and there is none in this file
13:22:38  Check interference works with Asm4 Assemblies and there is none in this file
13:23:05  Check interference works with Asm4 Assemblies and there is none in this file
13:23:09  Check interference works with Asm4 Assemblies and there is none in this file
13:23:36  Check interference works with Asm4 Assemblies and there is none in this file
13:23:44  Check interference works with Asm4 Assemblies and there is none in this file

The warnings I have from my errors in my current assembly is really hard to track down when the assembly consist of multiple Parts from multiple files.

Hi Zolko,

The A4 measurement tool remains my favorite measurement tool in FreeCAD! I use it all the time. Today, I noticed that the distance measured is reported as zero when measuring distances between the LCSes of two inserted parts in an Assembly. It does not matter if the two inserted parts and the same or different “source” parts in the “Parts” group. There is no problem measuring the distances between the edges or vertices of the same inserted parts. So… is there something I need to do to make this work for LCSes?

MORE DETAILS:
I created a simple example model (attached) to demonstrate. I also attached screenshots of the example and the results of measuring the distance between Body001:LCS_0 and other_Body001:LCS_001. Similarly, the zero distance is reported when measuring between Body001:LCS_0 and Body002:LCS_0.

I am using version FreeCAD 0.21.1 that I built from source. Additional version info follows:

OS: Debian GNU/Linux 11 (bullseye)
Word size of FreeCAD: 64-bit
Version: 0.21.1.Unknown
Build type: Release
Python 3.9.2, Qt 5.15.2, Coin 4.0.0, Vtk 9.0.1, OCC 7.5.1
Locale: C/Default (C)
Installed mods: 
  * Defeaturing 1.2.1
  * Help 1.0.3
  * Assembly4.backup1677808144.6371338 0.12.5 (Disabled)
  * Plot 2022.4.17
  * Assembly4 0.50.4
  * pcb 6.2023.0
  * Curves 0.6.14
  * sheetmetal.backup1694201338.1140296 0.2.63 (Disabled)
  * fasteners.backup1661239620.5473537
  * 3D_Printing_Tools
  * freecad.gears 1.0.0
  * dodo 1.0.0
  * Lithophane
  * sheetmetal 0.3.12
  * CurvedShapes 1.0.5
  * CfdOF 1.24.8
  * fasteners 0.4.70
  * fcgear 1.0.0
  * ProDarkThemePreferencePack 1.0.0 (Disabled)

asm4_measure_test_Screenshot_20231121_182738.png
asm4_measure_test_Screenshot_20231121_190450.png

thanx to also report things that wok well


Today, I noticed that the distance measured is reported as zero when measuring distances between the LCSes of two inserted parts in an Assembly. It does not matter if the two inserted parts and the same or different “source” parts in the “Parts” group.

you’re right, that’s a bug. But it seems to fail only when one of the LCSs are from a part/body in the same document. Could you please try with parts that come from different files ?

Think that I found a bug in Assembly 4 or I’m doing something wrong. I have one file (A) that includes 2 parts with their LCSs for assembly. I have 2 assembly files (B, C) where B links to file A-part1 and C links to file A-part2.

This works as intended when I just open file B, OR file C. Note that opening either file B or C also opens the linked file A.

If I open file B (ok) and then open file C, the part in file A-part2 is “not found”. Link “broken”. Part does not show up on screen.

Link to the files:
https://drive.google.com/drive/folders/1EdHaPlnoSrRHvwUcSvX3WAtEzs8PI6Wa?usp=sharing
Place all 4 files in the same directory for testing.