AutodeskAILab / Fusion360GalleryDataset

Data, tools, and documentation of the Fusion 360 Gallery Dataset
Other
408 stars 49 forks source link

Doubts about datasets #93

Closed nylvy closed 1 year ago

nylvy commented 1 year ago

Thank you for open sourcing such a great project! But I have a few questions about Assembly Dataset that I hope you can answer. Hierarchical information about the assembly dataset, such as Tree, root, etc. There are some variables that I somewhat don't quite understand after reading the paper and in the presentation of Fusion 360 Gallery, as follows:

  1. In the paper you say: "The tree contains this hierarchy information by linking to occurrence UUIDs." Is the tree the whole diagram in Figure 9 right in the paper? Does it include the parts below? (I understand that the parts should be the bodies in the paper.) I may be a bit vague about the definition of the tree.

  2. For example, take an assembly(20215_e2eb3082)that I randomly selected from the Assembly Dataset. Looking at the JSON file, the Tree only contains a dictionary with a key of root and a value of occurrences, but at the root level of the data it contains only components and bodies, which shouldn't mean the same thing as root, right?

  3. Is the 'name' of Occurrence in the dataset the proper name for the component in a particular industry, and does it contain other information such as location or order that is useful for assembly?

  4. About 'body' inside the 'name' naming method for 'Body' + 'number', and different 'bodies' may contain the same name, what does this number indicate?

5.The last point, about the naming of bodies, occurrences, components, similar to 20215_e2eb3082 in occurrences: 03fd7a74-05b5-11ec-ba40-0a17b33ae929, component: 03fcde40-05b5- 11ec-8cdf-0a17b33ae929, bodies: 03f2f326-05b5-11ec-9d62-0a17b33ae929, do these numbers and letters have any special meaning?

Hope to get your reply! Thank you as always and have a nice day !

karldd commented 1 year ago

Re: 1

So the tree element in the assembly.json file comes from the Fusion 360 browser (see 4 in the image below)

When a CAD model is created the designer can create and nest multiple layers of components. This becomes the tree structure.

One way to understand this is to rebuild the CAD and inspect it manually in Fusion 360 using this script: https://github.com/AutodeskAILab/Fusion360GalleryDataset/tree/master/tools/assembly2cad

Re: 2 Here is what is different between occurrences, components, and bodies:

Element Description
occurrences Instances of components, referencing the parent component with instance properties such as location, orientation, and visibility
components Components containing bodies or other components to form sub-assemblies
bodies The underlying 3D shape geometry in the B-Rep format

Re: 3 Yes occurrences contain various information such as:

{
    "occurrences": {
        "5090334c-05a1-11ec-96cd-0621f375c677": {
            "bodies": {...},
            "component": "508d9b40-05a1-11ec-9d41-0621f375c677",
            "is_grounded": true,
            "is_visible": true,
            "name": "steering upright",
            "physical_properties": {...},
            "transform": {...},
            "type": "Occurrence",
            "valid_occ_name": true
        },
        ...
    }
}

The location is contained in the transform.

Re: 4 Not sure I understand this question. Can you elaborate?

Re: 5 These numbers are called UUID's that are the unique keys to find the element in the json.

nylvy commented 1 year ago

Thank you for your reply. Regarding the fourth point of concern I'll use the information of the assembly 20215_e2eb3082 in the assembly dataset to express my confusion. The bodies level of this assembly data contains a 'name' information, e.g. name='Body1', name='Body2' etc. Does the number after this Body have any meaning?

nylvy commented 1 year ago

Also about the source of this data, you said it was obtained by parsing this .f3d using Fusion 360 python API, I wonder if you have the intention to open source this parser?

karldd commented 1 year ago

So you mean the 1 in Body1. That is the default naming used in Fusion 360.

FYI If you want to reference a body (i.e. the actual 3D geometry) you will need to reference it using the UUID in the file name. So for example with this simple one: https://github.com/AutodeskAILab/Fusion360GalleryDataset/tree/master/tools/testdata/assembly_examples/belt_clamp

8b4e1828-b296-11eb-9d3c-f21898acd3b7.smt and 8b4e5752-b296-11eb-9d3c-f21898acd3b7.smt are two bodies. One of them is the screw and one of them is the plate.

Assembly

There are two components - one is the root component containing the plate, and one is the screw component. There are four occurrences for each of the repeated screws used in the design.

karldd commented 1 year ago

Also about the source of this data, you said it was obtained by parsing this .f3d using Fusion 360 python API, I wonder if you have the intention to open source this parser?

Yes we parsed the .f3d files using the python API. Unfortunately we don't have plans to release this code.

nylvy commented 1 year ago

So you mean the 1 in Body1. That is the default naming used in Fusion 360.

FYI If you want to reference a body (i.e. the actual 3D geometry) you will need to reference it using the UUID in the file name. So for example with this simple one: https://github.com/AutodeskAILab/Fusion360GalleryDataset/tree/master/tools/testdata/assembly_examples/belt_clamp

8b4e1828-b296-11eb-9d3c-f21898acd3b7.smt and 8b4e5752-b296-11eb-9d3c-f21898acd3b7.smt are two bodies. One of them is the screw and one of them is the plate.

Assembly

There are two components - one is the root component containing the plate, and one is the screw component. There are four occurrences for each of the repeated screws used in the design.

Your response was so timely and I appreciate you being so patient in answering my questions, however, the answer here raises three other minor questions for me. 1.Why the tree here contains only four ocurrence's uuid, four screws and a plane why not 5 ocurrence's uuid.

2.What kind of components and bodies are put into the root hierarchy, and are there any characteristics of the components and bodies that are put into the root hierarchy?

3.Does there exist assembly data for a component that contains multiple bodies, and if so, is it possible to give information about this assembly data so that I can quickly retrieve it in the dataset.

Thank you as always and have a nice day !

karldd commented 1 year ago

1.Why the tree here contains only four ocurrence's uuid, four screws and a plane why not 5 ocurrence's uuid.

This is because there is one body in the root component (which by definition there can be only one root, so therefore no occurrences). Occurrences will exist for all regular components, just not the root.

2.What kind of components and bodies are put into the root hierarchy, and are there any characteristics of the components and bodies that are put into the root hierarchy?

This really depends on the designers preferences.

3.Does there exist assembly data for a component that contains multiple bodies, and if so, is it possible to give information about this assembly data so that I can quickly retrieve it in the dataset.

Yes that is possible. What I would suggest you do to understand how the assemblies are structured is to rebuild them and inspect them manually in Fusion 360 using this script: https://github.com/AutodeskAILab/Fusion360GalleryDataset/tree/master/tools/assembly2cad

nylvy commented 1 year ago

1.Why the tree here contains only four ocurrence's uuid, four screws and a plane why not 5 ocurrence's uuid.

This is because there is one body in the root component (which by definition there can be only one root, so therefore no occurrences). Occurrences will exist for all regular components, just not the root.

2.What kind of components and bodies are put into the root hierarchy, and are there any characteristics of the components and bodies that are put into the root hierarchy?

This really depends on the designers preferences.

3.Does there exist assembly data for a component that contains multiple bodies, and if so, is it possible to give information about this assembly data so that I can quickly retrieve it in the dataset.

Yes that is possible. What I would suggest you do to understand how the assemblies are structured is to rebuild them and inspect them manually in Fusion 360 using this script: https://github.com/AutodeskAILab/Fusion360GalleryDataset/tree/master/tools/assembly2cad

Ok, thanks for your reply, I will try to rebuild it to understand it better. Thank you as always and have a nice day !