tutorials:import-object-in-groimp
Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| tutorials:import-object-in-groimp [2024/09/27 15:54] – created tim | tutorials:import-object-in-groimp [2025/11/01 08:24] (current) – [Importing though RGG code] Tim | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | GroIMP can import | + | ====== Importing |
| + | With GroIMP it is possible to import objects from several 3d or graph formats into the project graph. The imported objects can then be used similarly to any other part of the graph. | ||
| - | In the following different way of adding a file will be shown based on {{ : | ||
| + | In the following, a different way of adding a file will be shown based on {{ : | ||
| - | ====== Using the Gui ====== | ||
| - | ===== Add directly | + | ===== Using the Gui ===== |
| + | |||
| + | ==== Add directly ==== | ||
| | | ||
| The easiest way is to add the object directly, using the main menu: Objects, there you can find the options insert File and insert File to RGG. | The easiest way is to add the object directly, using the main menu: Objects, there you can find the options insert File and insert File to RGG. | ||
| - | They both work very similar, starting with a file dialog to choose which file to import and then turning this file into a graph and adding it. The only difference is that ' | + | They both work very similar, starting with a file dialog to choose which file to import and then turning this file into a graph and adding it. The only difference is that ' |
| - | In order to remove | + | In order to remove |
| Line 27: | Line 29: | ||
| [f: | [f: | ||
| </ | </ | ||
| + | |||
| + | |||
| + | ==== Importing though RGG code ==== | ||
| + | |||
| + | The same steps are also possible through RGG code. This allows us to automatize the loading of projects or to load at a certain step. | ||
| + | |||
| + | Importing through code gives us two options, adding directly to the root of the graph ( see above), or loading the file and return the node for further usage. | ||
| + | |||
| + | === Import to the root === | ||
| + | |||
| + | We can use the importNodeFromFile function with the path to the file as the first and the MimeType as the second parameter. | ||
| + | |||
| + | <hidden finding MimeTypes for extension> | ||
| + | |||
| + | To find the MimeType for an extension, we can use the embedded documentation. For example to find the mimeType for a dtd file: | ||
| + | |||
| + | **1. Open the help** | ||
| + | |||
| + | by clicking in the main menu on Help > Help | ||
| + | |||
| + | **2. Enable " | ||
| + | |||
| + | To make sure you also search the auto generated documentation, | ||
| + | |||
| + | {{: | ||
| + | |||
| + | |||
| + | **3. Search for the file extension** | ||
| + | |||
| + | Type the extension (in our case " | ||
| + | |||
| + | ** 4. Find the file named " | ||
| + | |||
| + | {{: | ||
| + | |||
| + | |||
| + | ** 5. Find MimeType** | ||
| + | |||
| + | On this page you find a table with all import formats supported and their mimeTypes. | ||
| + | The one you searched should be highlighted: | ||
| + | |||
| + | {{: | ||
| + | |||
| + | |||
| + | This should work for all supported format. If you cant find the format you are looking for it might be in a plugin that is not installed. | ||
| + | </ | ||
| + | |||
| + | |||
| + | After downloading the dtd file we can use the code blow to import it by pressing the load button on the rgg toolbar. | ||
| + | |||
| + | |||
| + | <code java importNodeFromFile.rgg> | ||
| + | |||
| + | public void load(){ | ||
| + | //Maybe you have to change the path to fit your file system | ||
| + | importNodeFromFile(getPathToHomeDirectory()+" | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | |||
| + | The same function could also be used with an input stream. For example you can add the dtd file to the file explorer by using '' | ||
| + | |||
| + | Afterwards the following code can be used to add the file directly from the GroIMP file system: | ||
| + | |||
| + | <code java importNodeFromStream.rgg> | ||
| + | public void load(){ | ||
| + | importNodeFromStream(getInputStreamFromProject(" | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | |||
| + | === Import and return node === | ||
| + | |||
| + | With the same parameters as above we can also use the loadNodeFromFile and loadeNodeFromStream functions. | ||
| + | These functions return the root of the imported structure and therefore allow us to place it at any position in our graph. For example lats place the dtd tree twice in the graph once at 0,0,0 and once at 2, | ||
| + | |||
| + | <code java loadNodeFromFile.rgg> | ||
| + | protected void init()[ | ||
| + | | ||
| + | loadNodeFromFile(getPathToHomeDirectory()+" | ||
| + | [ | ||
| + | | ||
| + | | ||
| + | ]; | ||
| + | ] | ||
| + | |||
| + | </ | ||
| + | |||
| + | |||
| + | ==== Using the Object explorer ==== | ||
| + | |||
| + | A second more reusable way is to add the external objects to the Object explorer. The explorer can be found on the main menu on Panels/ | ||
| + | After selecting the file with the file dialog a popup asks "How should the file be added?" | ||
| + | |||
| + | __Add the file:__ the file is copied to a folder object in the GSZ or the project directory. This means the file is added to the project and will also be available if the project is moved. | ||
| + | |||
| + | __Link the file:__ only the path to the current file is added. This can be useful in a more complex pipeline where the external file is updated by another software or another GroIMP project. However, this relays on the file path to the external object. | ||
| + | |||
| + | __Embed the file:__ The file is read and added to the meta graph. Doing so makes it independent from the format, the file or the import process. However, it is then part of the GroIMP graph and for bigger files this could slow down the simulation. | ||
| + | |||
| + | The choice really depends on the use case, but in our case the easiest is to add the file. | ||
| + | After the file has been loaded it can be referenced from the RGG using ' | ||
| + | Using this in a XL query will create an instance of the imported object, in the Graph. This means it is not importing the graph structure but only one node representing the 3d structure. | ||
| + | |||
| + | For example the following code would create three times the same tree in a row: | ||
| + | < | ||
| + | |||
| + | protected void init () | ||
| + | [ | ||
| + | Axiom ==> for(int i=0; i<3; i++)( | ||
| + | Translate(0, | ||
| + | [ | ||
| + | Reference(" | ||
| + | ] | ||
| + | ); | ||
| + | ] | ||
| + | </ | ||
| + | |||
| + | It is also possible to access the graph structure of these referenced objects using the code below but it is more recommended to use the GraphExplorer to do so. | ||
| + | < | ||
| + | { | ||
| + | Reference ref = new Reference(" | ||
| + | Node refRoot = ref.resolveNode(); | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | |||
tutorials/import-object-in-groimp.1727445265.txt.gz · Last modified: 2024/09/27 15:54 by tim
