{"id":5057,"date":"2023-01-20T10:22:27","date_gmt":"2023-01-20T10:22:27","guid":{"rendered":"https:\/\/3dcoat.com\/documentation\/?post_type=manual_documentation&#038;p=5057"},"modified":"2026-03-11T17:05:56","modified_gmt":"2026-03-11T17:05:56","slug":"app-links","status":"publish","type":"manual_documentation","link":"https:\/\/3dcoat.com\/documentation\/manual\/getting-started\/app-links\/","title":{"rendered":"Applinks in 3DCoat specifications"},"content":{"rendered":"\n<p>Every AppLink will work in similar way. At first, you should read <a href=\"https:\/\/github.com\/3dcarrots\/3DCoat\/tree\/main\/AppLink_DevDoc\">installation notes<\/a>, then install corresponding AppLink. <br \/>After installing you should run your App, then run 3D-Coat. There should appear the new menu in &#8220;3DCoat &#8211; File-> Open in -> Your app name&#8221;.<\/p>\n\n\n\n<p>You may use this item to bring 3DCoat&#8217;s models from any room (Paint, Retopo, Voxels) to your app with color, normal, displacement and specular, but you should choose what you need -displacement or normalmap- not both at once.<\/p>\n\n\n\n<p>Also you may bring your models from your app to 3DCoat using plugin. In this case you will get new item in menu &#8220;File -&gt; Open in original app&#8221;. In so way you may bring model back to your app.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Making installer for AppLinks<a href=\"http:\/\/www.3d-coat.com\/files\/Installer.png\"><\/a><\/h3>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<p>Andrew: <em>I made very simple and easy to use script for NSIS to make AppLinks installer (Windows). <\/em><br \/>NSIS (Nullsoft Scriptable Install System) is a professional open source system to create Windows installers. It is designed to be as small and flexible as possible and is therefore very suitable for internet distribution.<\/p>\n\n\n\n<p>Please read notes and you will understand everything easily. <\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Download NSIS from: http:\/\/nsis.sourceforge.net\/Main_Page<\/li>\n\n\n\n<li>Open file AppLink.nsi and read text neat IMPORTANT tags. <\/li>\n\n\n\n<li>Replace &#8220;YourApp&#8221; to the name of your application.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Open files 3DC-Vxxx-Loading.psd [optionally, may leave as is] and header-MyApp.psd, modify them [if need] and save as BMP files.<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"500\" height=\"205\" src=\"https:\/\/3dcoat.com\/documentation\/wp-content\/uploads\/2023\/01\/3DC-V3-Loading.bmp?wsr\" alt=\"\" class=\"wp-image-13525\" srcset=\"https:\/\/3dcoat.com\/documentation\/wp-content\/uploads\/2023\/01\/3DC-V3-Loading.bmp 500w, https:\/\/3dcoat.com\/documentation\/wp-content\/uploads\/2023\/01\/3DC-V3-Loading-300x123.jpg 300w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/><figcaption class=\"wp-element-caption\">3DC-Vxxx-Loading.psd<\/figcaption><\/figure>\n<\/div>\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"432\" height=\"120\" src=\"https:\/\/3dcoat.com\/documentation\/wp-content\/uploads\/2023\/01\/header-MyApp.bmp?wsr\" alt=\"\" class=\"wp-image-13530\" srcset=\"https:\/\/3dcoat.com\/documentation\/wp-content\/uploads\/2023\/01\/header-MyApp.bmp 432w, https:\/\/3dcoat.com\/documentation\/wp-content\/uploads\/2023\/01\/header-MyApp-300x83.jpg 300w\" sizes=\"(max-width: 432px) 100vw, 432px\" \/><figcaption class=\"wp-element-caption\">header-MyApp.psd<\/figcaption><\/figure>\n<\/div>\n\n\n<ul class=\"wp-block-list\">\n<li>Open do.bat, set correct path to NSIS. <\/li>\n\n\n\n<li>Place plugin files to the &#8220;files&#8221; folder. <\/li>\n\n\n\n<li>Run do.bat, you will get EXE file of installer.<\/li>\n<\/ul>\n\n\n\n<blockquote class=\"wp-block-quote has-background is-layout-flow wp-block-quote-is-layout-flow\" style=\"background-color:#f1f1f1\">\n<p>It could be good to make installer for all AppLinks to make user&#8217;s life easy&nbsp;.<\/p>\n<\/blockquote>\n\n\n\n<p><a href=\"https:\/\/3dcoat.com\/forum\/applications\/core\/interface\/file\/attachment.php?id=8593\" target=\"_blank\" rel=\"noreferrer noopener\">AppLinkInstaller.rar<\/a><\/p>\n\n\n\n<p>To create a 3DCoat AppLink installer, you generally package the necessary plugin files (often Python scripts, configuration files like <code>.mcr<\/code> for Max, and textures) and provide clear instructions for placing them in the host application&#8217;s folders, especially within the user&#8217;s <code>Documents\\AppLinks<\/code> directory, with newer versions often requiring just enabling the built-in plugin in the host app&#8217;s preferences (like Blender) after an initial 3DCoat prompt. <\/p>\n\n\n\n<p>Key steps involve defining the exchange folder, enabling the add-on, and running scripts to set up materials and toolbar buttons, ensuring both 3DCoat and the external app (Blender, Max) communicate via shared folders.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3DCoat AppLinks specifications<\/h3>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<h4 class=\"wp-block-heading\"><a href=\"https:\/\/github.com\/3dcarrots\/3DCoat\/tree\/main\/AppLink_DevDoc#3d-coat-applinks-specifications\"><\/a>Applicable to 4.8.15 and later<\/h4>\n\n\n\n<p><em><strong>Some features, such as Python support, may be available in newer versions; these features will be commented on separately next to their description.<\/strong><\/em><\/p>\n\n\n\n<p>AppLinks are intended to simplify data exchange between 3D-Coat and other applications. AppLink is a plugin written for the specific application.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. The exchange path<a href=\"https:\/\/github.com\/3dcarrots\/3DCoat\/tree\/main\/AppLink_DevDoc#1-the-exchange-path\"><\/a><\/h2>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<p>In your plugin you should compose path to exchange data. It is<\/p>\n\n\n\n<p><strong>My Documents\\AppLinks\\3D-Coat\\Exchange\\<\/strong>&nbsp;<\/p>\n\n\n\n<p>You need full path, so it will look like (but not exactly, it differs from PC to PC)<\/p>\n\n\n\n<p><strong>C:\/Users\/UserName\/Documents\/AppLinks\/3D-Coat\/Exchange\/<\/strong><\/p>\n\n\n\n<p>See the Application 3 how to get this path. Other way is to ask this path from user, but it will be less convenient. Best option is to fill it by default and let user possibility to change it.<\/p>\n\n\n\n<p>Let us call this full path <strong>exchange_path.<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2. List of AppLinks in File->Export To-><a href=\"https:\/\/github.com\/3dcarrots\/3DCoat\/tree\/main\/AppLink_DevDoc#2-list-of-applinks-in-file-export-to-\"><\/a><\/h2>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<p>In the <strong>exchange_path<\/strong> you need to create Folder that corresponds to your application, for example Blender. Like<\/p>\n\n\n\n<p><strong>exchange_path\/Blender<\/strong><\/p>\n\n\n\n<p>Each folder means that there will appear the item in File-&gt;Export To-&gt;<\/p>\n\n\n\n<p>Within the folder you should create files:<\/p>\n\n\n\n<p><strong>run.txt<\/strong> The file is mandatory, it should exist. It may be empty, but if there is path to executable file, it will be run each time you choose in <strong>3D-Coat File-&gt;Export To-&gt;&#8230;your app&#8230;<\/strong><\/p>\n\n\n\n<p><strong>extension.txt<\/strong> Contains extension for export. If file not exists, OBJ is taken.<\/p>\n\n\n\n<p><strong>params.txt<\/strong> Parameters that passed to executable from run.txt except path to object<\/p>\n\n\n\n<p><strong>preset.txt<\/strong> The name of export preset that will be used for export<\/p>\n\n\n\n<p><strong>*.xml<\/strong> Any xml file in this folder will be treated as export preset. It will be copied to presets folder and used as default preset for this applink. You may refer this preset as file name without extension.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">3. First scenario: Application -> 3D-Coat and back<a href=\"https:\/\/github.com\/3dcarrots\/3DCoat\/tree\/main\/AppLink_DevDoc#3-first-scenario-application---3d-coat-and-back\"><\/a><\/h2>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<p>There are several scenarios of Applinks usage: <strong>First scenario<\/strong>: sending object from Application (say Blender) to 3D-Coat and back.<\/p>\n\n\n\n<p>Next steps. Let user created some model in Application, wants to drop it to 3D-Coat. First, as soon as user wants to drop model to 3D-Coat from the Application, you need to export object from Application, say the full path is<\/p>\n\n\n\n<p><strong>exchange_path<\/strong>\/<strong>exportfile.obj<\/strong><\/p>\n\n\n\n<p>You expect that after all job over the model 3d-coat will create file with path&nbsp;<strong>exchange_path<\/strong>\/<strong>returnpath.obj<\/strong> (generally name may be any different, this name is just for instance) Create&nbsp;<strong>import.txt<\/strong>&nbsp;like<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>exchange_path\/exportfile.obj \nexchange_path\/returnpath.obj<\/code><\/pre>\n\n\n<p>[ppp]<\/p>\n\n\n\n<p>[export_preset Blender Cycles]<\/p>\n\n\n\n<p>[ppp] means that you need to open file for perpixel painting. There are a lot of other options how to open the file. See the list below:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Paint mesh in 3D-Coat using per-pixel painting <strong>[ppp]<\/strong><\/li>\n\n\n\n<li>Paint mesh in 3D-Coat using microvertex painting <strong>[mv]<\/strong><\/li>\n\n\n\n<li>Paint mesh in 3D-Coat using Ptex <strong>[ptex]<\/strong><\/li>\n\n\n\n<li>Perform UV-mapping in 3D-Coat <strong>[uv]<\/strong><\/li>\n\n\n\n<li>Drop reference mesh to 3D-Coat <strong>[ref]<\/strong><\/li>\n\n\n\n<li>Drop retopo mesh as new layer in 3D-Coat <strong>[retopo]<\/strong><\/li>\n\n\n\n<li>Drop mesh in 3D-Coat as voxel object <strong>[vox]<\/strong><\/li>\n\n\n\n<li>Drop mesh in 3D-Coat as single voxel object, all objects will be merged together in one volume <strong>[voxcombine]<\/strong><\/li>\n\n\n\n<li>Drop mesh in 3D-Coat as new pen alpha <strong>[alpha]<\/strong><\/li>\n\n\n\n<li>Drop mesh in 3D-Coat as new merging primitive for voxels <strong>[prim]<\/strong><\/li>\n\n\n\n<li>Drop mesh in 3D-Coat as a curve profile <strong>[curv]<\/strong><\/li>\n\n\n\n<li>Drop mesh in 3D-Coat for Auto-retopology <strong>[autopo]<\/strong><\/li>\n<\/ul>\n\n\n\n<p>The last line <strong><em>[export_preset Blender Cycles]<\/em><\/strong> means that you will choose&nbsp;&nbsp;<strong>Blender Cycles<\/strong>&nbsp;preset in export dialog when user will export. Generally you may refer to any preset, even to your own.<\/p>\n\n\n\n<p><em><strong>!! import.py is supported since 3DCoat version 2025.12 or later. !!<\/strong><\/em><\/p>\n\n\n\n<p>Alternatively, you can use the import.py file to execute a python script for import via AppLink. Simply place the import.py file in the same folder as import.txt. After importing, both files will be deleted. If import.txt is empty, import.py will simply be executed and the standard import dialog from AppLink to 3DCoat will not open, allowing you to perform silent imports or custom dialogs.<\/p>\n\n\n\n<p>You may place additional commands into import.txt. There is one useful example. Say, you need to run some script after importing the object. In this case write after <strong>[ppp]<\/strong> or <strong>[export_preset &#8230;]<\/strong><\/p>\n\n\n\n<p><strong>[python text_of_python_script]<\/strong><\/p>\n\n\n\n<p>or<\/p>\n\n\n\n<p><em><strong>!! The &#8220;pythonfile&#8221; property is supported since 3DCoat version 2025.12 !!<\/strong><\/em><\/p>\n\n\n\n<p><strong>[pythonfile path_to_script_file]<\/strong> The pythonfile property should point to the python script corresponding to 3DCoat,<\/p>\n\n\n\n<p>Older versions of 3DCoat used a &#8220;script&#8221; command that was executed using Angel Script, but as of version 2025.12 the &#8220;script&#8221; property and Angel Script have been deprecated, it will still work but will automatically be converted to Python for execution, we recommend using &#8220;python&#8221; instead.<\/p>\n\n\n\n<p><em><strong>!! The &#8220;scriptfile&#8221; property is not supported since 3DCoat version 2025.12 !!<\/strong><\/em> Older versions of 3DCoat used a &#8220;scriptfile&#8221; command that pointed to an Angel Script file, but as of version 2025.12 the &#8220;scriptfile&#8221; property and Angel Script are deprecated and will not work.<\/p>\n\n\n\n<p>Example of useful script: For example, after importing object into 3D-Coat you need to pass textures additionally. In this case write<\/p>\n\n\n\n<p><strong>[python ImportTexture(&#8220;$LOADTEX&#8221;,&#8221;Uv_Set_Name&#8221;, \u201cPath_ToTexture\u201d)]<\/strong><\/p>\n\n\n\n<p><strong>&#8220;$LOADTEX&#8221;<\/strong> is identifier from Textures-&gt;Import-&gt;Color\/Albedo map. You may take any identifier from <strong>Import\/Export menu<\/strong>. Use <strong>MMB+RM<\/strong>B to extract identifier (it always starts from <strong>$<\/strong> sign).<\/p>\n\n\n\n<p>Other examples of identifiers<\/p>\n\n\n\n<p><strong>$LOADTEX<\/strong> &#8211; Textures-&gt;Import-&gt;Color\/Albedo <strong>$ExternalAO<\/strong> &#8211; Textures-&gt;Import-&gt;External AO <strong>$ExternalCavity<\/strong> &#8211; External Curvature <strong>$LOADMETAL<\/strong> &#8211; Textures-&gt;Import-&gt;Metalness Map <strong>$LOADEMISSIVE<\/strong> &#8211; Textures-&gt;Import-&gt;Emissive <strong>$LOADEMISSIVE_BW<\/strong> &#8211; Textures-&gt;Import-&gt;Emissive Intensity <strong>$LOADLOPOLYTANG<\/strong> &#8211; Textures-&gt;Import-&gt;Normal Map <strong>$ImportOSNormal<\/strong> &#8211; Textures-&gt;Import-&gt;World Space Normal Map <strong>$LOAD_LAYER_DISP<\/strong> &#8211; Textures-&gt;Import-&gt;Displacement Map<\/p>\n\n\n\n<p>In <strong>Roughress\/Metallness<\/strong> workflow:<\/p>\n\n\n\n<p><strong>$LOADROUGHNESS<\/strong> &#8211; Textures-&gt;Import-&gt;Roughness<\/p>\n\n\n\n<p>In <strong>Gloss\/Metallnes<\/strong>s workflow:<\/p>\n\n\n\n<p><strong>$LOADSPEC<\/strong> &#8211; Textures-&gt;Import-&gt;Glossiness Map<\/p>\n\n\n\n<p>In <strong>Gloss\/Specular<\/strong> color workflow:<\/p>\n\n\n\n<p><strong>$LOADSPECCOL<\/strong> &#8211; Textures-&gt;Import-&gt;Specular Color<\/p>\n\n\n\n<p>If you need to switch to specific texturing workflow, use any of commands before textures importing commands<\/p>\n\n\n\n<p><strong>[python cmd(\u201c$GlossSpecular\u201d)]<\/strong> \/\/Textures-&gt;Textures Export\/Import workflow-&gt;Gloss\/Color Specular<\/p>\n\n\n\n<p><strong>[python cmd(\u201c$GlossMetallness\u201d)]<\/strong> \/\/Textures-&gt;Textures Export\/Import workflow-&gt;Gloss\/Metalness<\/p>\n\n\n\n<p><strong>[python cmd(\u201c$RoughnessMetallness\u201d)]<\/strong> \/\/Textures-&gt;Textures Export\/Import workflow-&gt;Roughness\/Metalness<\/p>\n\n\n\n<p>Let us continue describing other parameters of <strong>ImportTexture<\/strong><\/p>\n\n\n\n<p><strong>Uv_Set_Name<\/strong> is name of Uv-set where you want to import texture. Passing <strong>\u201cany\u201d<\/strong> means first UV-set of the model.<\/p>\n\n\n\n<p><strong>Path_ToTexture<\/strong> is full path to texture. Generally relative paths allowed as well, but path should be relative to MyDocyuments\/3D-CoatVxx\/. <strong>Important!<\/strong> It is better to pass all paths with <strong>\u201c\/\u201d<\/strong> not with <strong>\u201c\\\u201d<\/strong>. You may use <strong>\u201c\\\u201d<\/strong> but you should pass <strong>\u201c\\\\\u201d<\/strong> instead of <strong>\u201c\\\u201d<\/strong> due to <strong>python syntax<\/strong> used for scripts. This is just example, you may use any script commands there. There are several additional commands that you may use in import.txt, the list is in <strong>Application 6.<\/strong><\/p>\n\n\n\n<p><strong>Important!<\/strong> You should create all object files, textures and only after all create <strong>import.txt<\/strong> because import.txt creation is signal for 3D-Coat to start importing.<br \/>After creation of the file import.txt 3D-Coat will import your file. In the case above &#8211; for perpixel painting. Then user will edit the file, create textures, modify etc. After the edit process user will trigger the<\/p>\n\n\n\n<p><strong>File-&gt;Open in original App<\/strong> In this case 3D-Coat will create set of files that will indicate that export finished. The file<\/p>\n\n\n\n<p><strong>exchange_path\/export.txt<\/strong> will be created. The file contains path to exported model file. It is the same name that you passed previously using <strong>import.txt<\/strong>. In our case it is<\/p>\n\n\n\n<p><strong>exchange_path<\/strong>\/<strong>exportfile.obj<\/strong> Also the file <strong>exchange_path<\/strong>\/<strong>textures.txt<\/strong> will be created. It contains references to textures created during export<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Name_of_material_1\nName_of_uv_set_1\nTexure_uage_1\nAbsolute_path_to_texture_1\n\u2026.same for second and other textures \u2026\n<\/code><\/pre>\n\n\n\n<p>Texture usage is taken from the export presets tags, so you may easily identify type of texture. If Export constructor is not used then tags <strong>color<\/strong>, <strong>specular<\/strong>, <strong>displacement<\/strong>, <strong>normalmap<\/strong> are used**.** It there is tag <strong>displacement<\/strong> additional floating number will be written below \u2013 scale factor for displacement, it looks like<\/p>\n\n\n\n<p><strong>displacement 1.345<\/strong><\/p>\n\n\n\n<p>When you will detect that file export.txt exists and is not empty or locked &#8211; read the file, use it\u2019s content and delete. The file export.xml will be created as well. It contains complete export settings. No need to use this file if you don\u2019t need to analyse export settings.<\/p>\n\n\n\n<p><strong>So, you finished complete loop Application-&gt;3D-Coat-&gt;Application<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">4. Second scenario: 3D-Coat -> Application<a href=\"https:\/\/github.com\/3dcarrots\/3DCoat\/tree\/main\/AppLink_DevDoc#4-second-scenario-3d-coat---application\"><\/a><\/h2>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<p>There is menu item <strong>File-&gt;Export To-&gt;&#8230;.list of applications\u2026<\/strong> in 3D-Coat. In the <strong>Section 2<\/strong> we described how to add items there.<\/p>\n\n\n\n<p>Afterl user will choose <strong>File &#8211; &gt; Open in original App<\/strong> the file <strong>exchange_path\/YourAppName\/export.txt<\/strong> will be created. <strong>You should monitor when the file will appear<\/strong> and then read it. The <strong>export.txt<\/strong> contains the path of the object to import. After reading you need to delete the export.txt. Together with this file the <strong>exchange_path\/textures.txt<\/strong> will be created. You may read the list of exported textures as described above. Pay attention that <strong>export.txt<\/strong> and <strong>textures.txt<\/strong> located in different folders.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">5. Examples<a href=\"https:\/\/github.com\/3dcarrots\/3DCoat\/tree\/main\/AppLink_DevDoc#5-examples\"><\/a><\/h2>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Example1:<a href=\"https:\/\/github.com\/3dcarrots\/3DCoat\/tree\/main\/AppLink_DevDoc#example1\"><\/a><\/h3>\n\n\n\n<p>User pressed <strong><em>\u201cPaint mesh in 3D-Coat using per-pixel painting [ppp]\u201d<\/em><\/strong> in your AppLink<\/p>\n\n\n\n<p>Let <strong>exchange_path<\/strong> is <strong>c:\/Users\/Andrew\/Documents\/AppLinks\/3D-Coat\/Exchange\/<\/strong><\/p>\n\n\n\n<p>place some <strong>OBJ\/LWO\/FBX<\/strong> file there like <strong>sample.obj<\/strong> (mtl and textures too if need)<\/p>\n\n\n\n<p>create file <strong>c:\/Users\/Andrew\/Documents\/AppLinks\/3D-Coat\/Exchange\/import.txt<\/strong> and place 3 lines there:<\/p>\n\n\n\n<p>[look the end of document how to locate the folder for OSX\/Linux]<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>c:\/Users\/Andrew\/Documents\/AppLinks\/3D-Coat\/Exchange\/sample.obj\nc:\/Users\/Andrew\/Documents\/AppLinks\/3D-Coat\/Exchange\/output.obj<\/code><\/pre>\n\n\n<p>[ppp]<\/p>\n\n\n\n<p>[export_preset Blender Cycles]<\/p>\n\n\n\n<p>Note that you may drop multiple objects simultaneously, you should separate them with ; sign. They will be merged together before import. There should not be extra spaces between names and ; signs. Example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>c:\/Users\/Andrew\/Documents\/AppLinks\/3D-Coat\/Exchange\/sample1.obj;c:\/Users\/Andrew\/Documents\/AppLinks\/3D-Coat\/Exchange\/sample2.obj\nc:\/Users\/Andrew\/Documents\/AppLinks\/3D-Coat\/Exchange\/output.obj<\/code><\/pre>\n\n\n<p>[ppp]<\/p>\n\n\n\n<p>[export_preset Blender Cycles]<\/p>\n\n\n\n<p>Once you will save file 3D-Coat will show import dialog for per-pixel painting and delete file import.txt. Press OK, draw something. Then use File-&gt;Bring object back (Open in original app). 3D-Coat will store file <strong>c:\/Users\/Andrew\/Documents\/AppLinks\/3D-Coat\/Exchange\/export.txt<\/strong><\/p>\n\n\n\n<p>This file contains full path to the output object. This is the same name as was specified in import.txt, so you will get one line in this file: <strong>c:\/Users\/Andrew\/Documents\/AppLinks\/3D-Coat\/Exchange\/<em>output.obj<\/em><\/strong><\/p>\n\n\n\n<p>Also 3D-Coat creates file <strong>c:\/Users\/Andrew\/Documents\/AppLinks\/3D-Coat\/Exchange\/textures.txt<\/strong><\/p>\n\n\n\n<p>With lines:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cube1_auv\ncube1_auv\ndiffuse\nc:\\Users\\Andrew\\Documents\\AppLinks\\3D-Coat\\Exchange\\output_diffuse.tga\ncube1_auv\ncube1_auv\nreflection\nc:\\Users\\Andrew\\Documents\\AppLinks\\3D-Coat\\Exchange\\output_reflection.tga\ncube1_auv\ncube1_auv\nroughness\nc:\\Users\\Andrew\\Documents\\AppLinks\\3D-Coat\\Exchange\\output_roughness.tga\ncube1_auv\ncube1_auv\nnormal_map\nc:\\Users\\Andrew\\Documents\\AppLinks\\3D-Coat\\Exchange\\output_normal_map.tga\ncube1_auv\ncube1_auv\nemissive\nc:\\Users\\Andrew\\Documents\\AppLinks\\3D-Coat\\Exchange\\output_emissive.tga\n<\/code><\/pre>\n\n\n\n<p>Creation of the file export.txt is signal to other application to import files and replace object in scene by the object that was exported from 3D-Coat. Your plugin should delete file export.txt after reading it.<\/p>\n\n\n\n<p>Note: Objects may contain several sub-objects, several materials and several uv-sets. UV-set may contain several materials. You should handle this general situation.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Application 1<\/strong>. Seeking for exchange folder for OSX<a href=\"https:\/\/github.com\/3dcarrots\/3DCoat\/tree\/main\/AppLink_DevDoc#appliction-1-seeking-for-exchange-folder-for-osx\"><\/a><\/h3>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<p>common function for all OS:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">void AppendSlash(char\\* s){\n\tint L=strlen(s);\n\tif(L){\n\t\tchar c=s\\[L-1\\];\n\t\tif(c!='\\\\\\\\' &amp;&amp; c!='\/')strcat(s,\"\/\");\n\t}\n}\nchar str\\[512\\];\nFSRef F;\nif(noErr == FSFindFolder(kUserDomain, kCurrentUserFolderType, kCreateFolder, &amp;F)) {\n\tFSRefMakePath(&amp;F, (unsigned char \\*)str,512);\n\tAppendSlash(str);\n\tstrcat(str,\"AppLinks\/3D-Coat\/Exchange\/\");\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Application 2<\/strong>. Seeking for exchange folder for Linux<\/h3>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<pre class=\"wp-block-preformatted\">char str\\[512\\];\nstrcpy(str,g_get_home_dir());\nAppendSlash(str);\nstrcat(str,\u201d AppLinks\/3D-Coat\/Exchange\/\u201d);<\/pre>\n\n\n\n<p><a href=\"https:\/\/github.com\/3dcarrots\/3DCoat\/tree\/main\/AppLink_DevDoc#application-2-seeking-for-exchange-folder-for-linux\"><\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Application 3<\/strong>. Seeking for exchange folder for Windows<a href=\"https:\/\/github.com\/3dcarrots\/3DCoat\/tree\/main\/AppLink_DevDoc#application-3-seeking-for-exchange-folder-for-windows\"><\/a><\/h3>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<pre class=\"wp-block-preformatted\">TCHAR Path\\[MAX_PATH\\];\nif(SUCCEEDED(SHGetFolderPath(NULL, CSIDL_PERSONAL | CSIDL_FLAG_CREATE, NULL, 0, Path))) {\n\tAppendSlash(Path);\n\tstrcat(Path, \"AppLinks\/3D-Coat\/Exchange\/\");\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Application 4<\/strong>: The general supposed architecture of plugin**<\/h3>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<p><a href=\"https:\/\/github.com\/3dcarrots\/3DCoat\/tree\/main\/AppLink_DevDoc#application-4-the-general-supposed-architecture-of-plugin\"><\/a>Initialization section:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Get and store path of Exchange folder<\/li>\n\n\n\n<li>Create folder <strong>Exchange\/YourApp\/<\/strong> and file <strong>run.txt<\/strong> [must] and <strong>params.txt<\/strong> [optional]<\/li>\n\n\n\n<li>Create timer\/thread to check if file import.txt exists. If threads or timer is not available, skip this step.<\/li>\n<\/ul>\n\n\n\n<p>Processing section:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Once in 1 sec you should check if any of files <strong>Exchange\/import.txt<\/strong> and <strong>Exchange\/YourApp\/import.txt<\/strong> exist. If plugin has no timer callback or threads it has some processing cycle anyway. In this processing cycle you may check if 1 sec passed since last check of files.<\/li>\n<\/ul>\n\n\n\n<p>It is supposed that plugin should not run 3D-Coat because there are many different versions and it will be difficult to determine what version user wants to use. But it will be helpful (but not required, optional) if plugin will check if process 3D-Coat is in memory and suppose to user to run it if process is not run. You should seek process that has substring \u201c3D-Coat\u201d in it\u2019s name. There is sample of function to determine if 3D-Coat is in memory:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">#include &lt;tlhelp32.h&gt;\n\n\nbool Find3DCoat(){\n\tHANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);\n\tPROCESSENTRY32 pe;\n\tif(!hSnapshot)return false;\t\n\tpe.dwSize = sizeof(pe);\n\tfor(int i = Process32First(hSnapshot, &amp;pe); i; i=Process32Next(hSnapshot, &amp;pe)){\n\t\tHANDLE hModuleSnap = NULL;\n\t\tMODULEENTRY32 me;\n\t\thModuleSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,pe.th32ProcessID);\n\t\tif(hModuleSnap == (HANDLE) -1)continue;\n\t\tme.dwSize = sizeof(MODULEENTRY32);\n\t\tif(Module32First(hModuleSnap, &amp;me)){\n\t\t\tdo{\n\t\t\t\tchar temp[MAX_PATH];\n\t\t\t\tstrcpy_s(temp,MAX_PATH,me.szExePath);\n\t\t\t\t_strupr_s(temp,MAX_PATH);\n\t\t\t\tint p=strlen(temp);\n\t\t\t\tchar c=0;\n\t\t\t\twhile(c!='\\\\' &amp;&amp; c!='\/' &amp;&amp; p!=0){\n\t\t\t\t\tc=temp[p--];\n\t\t\t\t}\n\t\t\t\tchar* s=temp+p;\n\t\t\t\tstrupr(s);\n\t\t\t\tif(strstr(s,\"3D-COAT\")){\n\t\t\t\t\treturn true;\n\t\t\t\t}\t\n\t\t\t\tbreak;\n\t\t\t}while(Module32Next(hModuleSnap, &amp;me));\n\t\t}\t\t\n\t}\n\tCloseHandle(hSnapshot);\n\treturn false;\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Application 5<\/strong>: Possible problems while making plugin.<a href=\"https:\/\/github.com\/3dcarrots\/3DCoat\/tree\/main\/AppLink_DevDoc#application-5-possible-problems-while-making-plugin\"><\/a><\/h3>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<ul class=\"wp-block-list\">\n<li>If you decided to seek if 3D-Coat\u2019s process is in memory and run 3D-Coat (this step is optional) you need to run 3D-Coat as administrator on Vista\/7<\/li>\n\n\n\n<li>You are specifying the export path and file name for 3D-Coat in import.txt. If you are specifying the same path to the output object for different scenes it can cause problem because textures will be overwritten with textures from the new scene. You should specify path that will depend on user\u2019s scene\/name of object or so to avoid this problem.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Application 6:<\/strong> Extra commands for <strong>import.txt<\/strong><\/h3>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<p><a href=\"https:\/\/github.com\/3dcarrots\/3DCoat\/tree\/main\/AppLink_DevDoc#application-6-extra-commands-for-importtxt\"><\/a>Import.txt may have additional options in additional lines of the file.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>[SkipImport] allows to skip import dialog, default options will be used.<\/li>\n\n\n\n<li>[SkipExport] allows to skip export dialog. Previous settings will be used (works in <strong>4.8.16<\/strong> and later)<\/li>\n\n\n\n<li>[TexOutput:\u2026 texture path there\u2026] allows to specify textures output path. It should end with \u201c\\\u201d or \u201c\/\u201d. <strong>This option does not work with export constructor<\/strong>. When export constructor used, textures paths are determined by object export path.<\/li>\n<\/ul>\n\n\n\n<p>Set of export options could be changed using command like<\/p>\n\n\n\n<p>[Option=value]<\/p>\n\n\n\n<p>There is set of possible options and values:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th><strong><em>Option<\/em><\/strong><\/th><th><strong><em>Value<\/em><\/strong><\/th><th><strong><em>Works for export constructor?<\/em><\/strong><\/th><\/tr><\/thead><tbody><tr><td>ExportColor<\/td><td>0 or 1<\/td><td>No<\/td><\/tr><tr><td>ExportSpecular<\/td><td>0 or 1<\/td><td>No<\/td><\/tr><tr><td>ExportNormalmap<\/td><td>0 or 1<\/td><td>No<\/td><\/tr><tr><td>ExportDispl<\/td><td>0 or 1<\/td><td>No<\/td><\/tr><tr><td>PickSourcePositions<\/td><td>0 or 1<\/td><td><strong>Yes<\/strong><\/td><\/tr><tr><td>ExportSpecularColor<\/td><td>0 or 1<\/td><td>No<\/td><\/tr><tr><td>ExportEmissive<\/td><td>0 or 1<\/td><td>No<\/td><\/tr><tr><td>ExportEmissivePower<\/td><td>0 or 1<\/td><td>No<\/td><\/tr><tr><td>ExportMetallness<\/td><td>0 or 1<\/td><td>No<\/td><\/tr><tr><td>ExportRoughness<\/td><td>0 or 1<\/td><td>No<\/td><\/tr><tr><td>ExportAO<\/td><td>0 or 1<\/td><td>No<\/td><\/tr><tr><td>PickDepthFromLayer0<\/td><td>0 or 1<\/td><td>No<\/td><\/tr><tr><td>CoarseMesh<\/td><td>0 or 1<\/td><td>No<\/td><\/tr><tr><td>DisplDepth<\/td><td>8 bits, 16 bits, 32 bits<\/td><td>No<\/td><\/tr><tr><td>DisplNorm<\/td><td>GREYBASED, ZEROBASED, ZEROBASED_NORM, ZEROBASED_ABS<\/td><td>No<\/td><\/tr><tr><td>DisplExt<\/td><td>BMP,TGA,PNG for 8 bit displacement<br \/><br \/>TIF for 16 bit displacament<br \/><br \/>TIFF, EXR for 32 bit displacement<\/td><td>No<\/td><\/tr><tr><td>ColorFileExtension<\/td><td>TGA, BMP, PNG, JPG**, TIF, TIFF, EXR, PSD**<\/td><td>No<\/td><\/tr><tr><td>SpecNormExtension<\/td><td>TGA, BMP, PNG, JPG**, TIF, TIFF, EXR, PSD (only specular extension will be assigned with this command, normalmap is TGA by default unless specified directly)**<\/td><td>No<\/td><\/tr><tr><td><strong>SpecExtension<\/strong><\/td><td><strong>TGA, BMP, PNG, JPG, TIF, TIFF, EXR,PSD<\/strong><\/td><td>No<\/td><\/tr><tr><td><strong>NormExtension<\/strong><\/td><td><strong>TGA, BMP, PNG, JPG, TIF, TIFF, EXR<\/strong><\/td><td>No<\/td><\/tr><tr><td>ExportResolution<\/td><td>LOW-POLY, MID-POLY<\/td><td><strong>Yes<\/strong><\/td><\/tr><tr><td><strong>[field field_id=value]<\/strong><\/td><td><strong>Set field value in export dialog. This command generally replaces all of previous commandes. You may set any field in export dialog. Example<\/strong><br \/><br \/><strong>[field $ExportOpt::UseExportConstructor = true]<\/strong><br \/><br \/><strong>To get field_id click LMB+RMB or MMB+RMB over the required field in export dialog.<\/strong><\/td><td><strong>Yes<\/strong><\/td><\/tr><tr><td><strong>[click control_id]<\/strong><\/td><td><strong>Click on any control in export dialog. Example &#8211; choose Unity preset &#8211;<\/strong><br \/><br \/><strong>[click $COMBOBOX_Unity (Specular)]<\/strong><br \/><br \/><strong>To get field_id click LMB+RMB or MMB+RMB over the required field in export dialog.<\/strong><\/td><td><strong>Yes<\/strong><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><strong>Generally it is much better to operate using export presets, way through \u201cOptions\u201d is deprecated.<\/strong><\/p>\n","protected":false},"author":3,"featured_media":0,"parent":2041,"menu_order":8,"template":"","manualdocumentationcategory":[9],"manual_doc_tag":[33],"class_list":["post-5057","manual_documentation","type-manual_documentation","status-publish","hentry","manualdocumentationcategory-manual","manual_doc_tag-applink"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Applinks in 3DCoat specifications - 3DCoat Documentation<\/title>\n<meta name=\"description\" content=\"Description of the principle of operation of Applinks in the 3DCoat\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/3dcoat.com\/documentation\/manual\/getting-started\/app-links\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Applinks in 3DCoat specifications - 3DCoat Documentation\" \/>\n<meta property=\"og:description\" content=\"Description of the principle of operation of Applinks in the 3DCoat\" \/>\n<meta property=\"og:url\" content=\"https:\/\/3dcoat.com\/documentation\/manual\/getting-started\/app-links\/\" \/>\n<meta property=\"og:site_name\" content=\"3DCoat Documentation\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/3DCoat\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-11T17:05:56+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@3DCoatOfficial\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"12 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/3dcoat.com\/documentation\/manual\/getting-started\/app-links\/\",\"url\":\"https:\/\/3dcoat.com\/documentation\/manual\/getting-started\/app-links\/\",\"name\":\"Applinks in 3DCoat specifications - 3DCoat Documentation\",\"isPartOf\":{\"@id\":\"https:\/\/3dcoat.com\/documentation\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/3dcoat.com\/documentation\/manual\/getting-started\/app-links\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/3dcoat.com\/documentation\/manual\/getting-started\/app-links\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/3dcoat.com\/documentation\/wp-content\/uploads\/2023\/01\/3DC-V3-Loading.bmp?wsr\",\"datePublished\":\"2023-01-20T10:22:27+00:00\",\"dateModified\":\"2026-03-11T17:05:56+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/3dcoat.com\/documentation\/manual\/getting-started\/app-links\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/3dcoat.com\/documentation\/manual\/getting-started\/app-links\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/3dcoat.com\/documentation\/manual\/getting-started\/app-links\/#primaryimage\",\"url\":\"https:\/\/3dcoat.com\/documentation\/wp-content\/uploads\/2023\/01\/3DC-V3-Loading.bmp?wsr\",\"contentUrl\":\"https:\/\/3dcoat.com\/documentation\/wp-content\/uploads\/2023\/01\/3DC-V3-Loading.bmp?wsr\",\"width\":500,\"height\":205},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/3dcoat.com\/documentation\/manual\/getting-started\/app-links\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/3dcoat.com\/documentation\/nl_NL\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Getting started\",\"item\":\"https:\/\/3dcoat.com\/documentation\/manual\/getting-started\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Applinks in 3DCoat specifications\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/3dcoat.com\/documentation\/#website\",\"url\":\"https:\/\/3dcoat.com\/documentation\/\",\"name\":\"3DCoat Documentation\",\"description\":\"Information about starting to use and learning how to use all the features of the 3DCoat.\",\"publisher\":{\"@id\":\"https:\/\/3dcoat.com\/documentation\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/3dcoat.com\/documentation\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/3dcoat.com\/documentation\/#organization\",\"name\":\"Pilgway\",\"url\":\"https:\/\/3dcoat.com\/documentation\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/3dcoat.com\/documentation\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/3dcoat.com\/documentation\/wp-content\/uploads\/2022\/09\/logo3DCoatWhite-1.png\",\"contentUrl\":\"https:\/\/3dcoat.com\/documentation\/wp-content\/uploads\/2022\/09\/logo3DCoatWhite-1.png\",\"width\":876,\"height\":190,\"caption\":\"Pilgway\"},\"image\":{\"@id\":\"https:\/\/3dcoat.com\/documentation\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/3DCoat\",\"https:\/\/x.com\/3DCoatOfficial\",\"https:\/\/www.youtube.com\/c\/PILGWAY3DCoat\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Applinks in 3DCoat specifications - 3DCoat Documentation","description":"Description of the principle of operation of Applinks in the 3DCoat","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/3dcoat.com\/documentation\/manual\/getting-started\/app-links\/","og_locale":"en_US","og_type":"article","og_title":"Applinks in 3DCoat specifications - 3DCoat Documentation","og_description":"Description of the principle of operation of Applinks in the 3DCoat","og_url":"https:\/\/3dcoat.com\/documentation\/manual\/getting-started\/app-links\/","og_site_name":"3DCoat Documentation","article_publisher":"https:\/\/www.facebook.com\/3DCoat","article_modified_time":"2026-03-11T17:05:56+00:00","twitter_card":"summary_large_image","twitter_site":"@3DCoatOfficial","twitter_misc":{"Est. reading time":"12 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/3dcoat.com\/documentation\/manual\/getting-started\/app-links\/","url":"https:\/\/3dcoat.com\/documentation\/manual\/getting-started\/app-links\/","name":"Applinks in 3DCoat specifications - 3DCoat Documentation","isPartOf":{"@id":"https:\/\/3dcoat.com\/documentation\/#website"},"primaryImageOfPage":{"@id":"https:\/\/3dcoat.com\/documentation\/manual\/getting-started\/app-links\/#primaryimage"},"image":{"@id":"https:\/\/3dcoat.com\/documentation\/manual\/getting-started\/app-links\/#primaryimage"},"thumbnailUrl":"https:\/\/3dcoat.com\/documentation\/wp-content\/uploads\/2023\/01\/3DC-V3-Loading.bmp?wsr","datePublished":"2023-01-20T10:22:27+00:00","dateModified":"2026-03-11T17:05:56+00:00","breadcrumb":{"@id":"https:\/\/3dcoat.com\/documentation\/manual\/getting-started\/app-links\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/3dcoat.com\/documentation\/manual\/getting-started\/app-links\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/3dcoat.com\/documentation\/manual\/getting-started\/app-links\/#primaryimage","url":"https:\/\/3dcoat.com\/documentation\/wp-content\/uploads\/2023\/01\/3DC-V3-Loading.bmp?wsr","contentUrl":"https:\/\/3dcoat.com\/documentation\/wp-content\/uploads\/2023\/01\/3DC-V3-Loading.bmp?wsr","width":500,"height":205},{"@type":"BreadcrumbList","@id":"https:\/\/3dcoat.com\/documentation\/manual\/getting-started\/app-links\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/3dcoat.com\/documentation\/nl_NL\/"},{"@type":"ListItem","position":2,"name":"Getting started","item":"https:\/\/3dcoat.com\/documentation\/manual\/getting-started\/"},{"@type":"ListItem","position":3,"name":"Applinks in 3DCoat specifications"}]},{"@type":"WebSite","@id":"https:\/\/3dcoat.com\/documentation\/#website","url":"https:\/\/3dcoat.com\/documentation\/","name":"3DCoat Documentation","description":"Information about starting to use and learning how to use all the features of the 3DCoat.","publisher":{"@id":"https:\/\/3dcoat.com\/documentation\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/3dcoat.com\/documentation\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/3dcoat.com\/documentation\/#organization","name":"Pilgway","url":"https:\/\/3dcoat.com\/documentation\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/3dcoat.com\/documentation\/#\/schema\/logo\/image\/","url":"https:\/\/3dcoat.com\/documentation\/wp-content\/uploads\/2022\/09\/logo3DCoatWhite-1.png","contentUrl":"https:\/\/3dcoat.com\/documentation\/wp-content\/uploads\/2022\/09\/logo3DCoatWhite-1.png","width":876,"height":190,"caption":"Pilgway"},"image":{"@id":"https:\/\/3dcoat.com\/documentation\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/3DCoat","https:\/\/x.com\/3DCoatOfficial","https:\/\/www.youtube.com\/c\/PILGWAY3DCoat"]}]}},"_links":{"self":[{"href":"https:\/\/3dcoat.com\/documentation\/wp-json\/wp\/v2\/manual_documentation\/5057","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/3dcoat.com\/documentation\/wp-json\/wp\/v2\/manual_documentation"}],"about":[{"href":"https:\/\/3dcoat.com\/documentation\/wp-json\/wp\/v2\/types\/manual_documentation"}],"author":[{"embeddable":true,"href":"https:\/\/3dcoat.com\/documentation\/wp-json\/wp\/v2\/users\/3"}],"version-history":[{"count":14,"href":"https:\/\/3dcoat.com\/documentation\/wp-json\/wp\/v2\/manual_documentation\/5057\/revisions"}],"predecessor-version":[{"id":13777,"href":"https:\/\/3dcoat.com\/documentation\/wp-json\/wp\/v2\/manual_documentation\/5057\/revisions\/13777"}],"up":[{"embeddable":true,"href":"https:\/\/3dcoat.com\/documentation\/wp-json\/wp\/v2\/manual_documentation\/2041"}],"wp:attachment":[{"href":"https:\/\/3dcoat.com\/documentation\/wp-json\/wp\/v2\/media?parent=5057"}],"wp:term":[{"taxonomy":"manualdocumentationcategory","embeddable":true,"href":"https:\/\/3dcoat.com\/documentation\/wp-json\/wp\/v2\/manualdocumentationcategory?post=5057"},{"taxonomy":"manual_doc_tag","embeddable":true,"href":"https:\/\/3dcoat.com\/documentation\/wp-json\/wp\/v2\/manual_doc_tag?post=5057"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}