<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Where to store a dynamically changing image ? in Archicad C++ API</title>
    <link>https://community.graphisoft.com/t5/Archicad-C-API/Where-to-store-a-dynamically-changing-image/m-p/704132#M10910</link>
    <description>&lt;P&gt;Hi Ben,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The developers came up with a couple of ideas:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P data-local-id="89fcc8b3ddb5" data-renderer-start-pos="1"&gt;A suggestion is that you should use the temporary folder: generate your images in a subfolder, add it temporarily as a library, and remove it on exit. In this case, the generated images will be lost (or maybe reused if that folder is used again and was not deleted between ArchiCAD sessions), but I suppose you do not need to keep them.&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;API_SpecFolderID specID = API_TemporaryFolderID;  
IO::Location tempFolder;  
ACAPI_ProjectSettings_GetSpecFolder (&amp;amp;specID, &amp;amp;tempFolder);  
&lt;/LI-CODE&gt;
&lt;P data-local-id="89fcc8b3ddb5" data-renderer-start-pos="1"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P data-local-id="faa2a35fd8ea" data-renderer-start-pos="481"&gt;A second idea would be the image section of your library parts.&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;RESULT_IF (selectedObject-&amp;gt;GetGDLPictures ())
{
	modifier.SetGDLPictures (*result);
}&lt;/LI-CODE&gt;
&lt;P data-local-id="faa2a35fd8ea" data-renderer-start-pos="481"&gt;&lt;SPAN class="prismjs _11c819w5 _2rko12b0 _1dqoglyw _1e0c1txw _vwz4gktf _1reo1wug _o572qvpr _1eimjvyg _bfhk187e _syazi7uo _1ozdn7od _7xinn7od _t7aun7od _r28du2gc _tajqu2gc _1ohiu2gc _m802u2gc _i6ntu2gc _1w2xu2gc _1hmyegat _vblregat _vbulegat _196q1j08 _1vbw1j08 _1v9c1j08 _1srnt0uh _18r6myb0 _vyvc1n1a _1d4j1y44 _1f8gstnw _1pzyb3bt _ra6gsb9t _13cdh2mm _1pp0126e _zvy9f705 _qcxof705 _qzn01a66 _j0l11wug _1weckb7n _1na21hna _vsnzgrf3 _x7c815vq _lh0y15vq _1m3815vq _qk1e15vq _12l6ysn8 _uga3ysn8 _mx8b7mnp _1kr87mnp _xo19t94y _1bemt94y _nalpstnw _151dstnw _1exb1q9c _1hgu1q9c _1mgnt94y _nhket94y _h909i8nm _scgayz1z _ipl81e17 _40uk1l04 _i81p1a66 _1gx21e5h _1ls01ule _vm2c1rh5 _12ok1rh5 _rude1ule _1q16glyw _1io6glyw _juomusic _lcwuusic _pyovu2gc _ccm6u2gc _1ascu2gc _1yuau2gc _xr0w1a66 _4io21a66 _euyxusvi _cahfusvi _zhnuidpf _1amdidpf _mbgc124n _bu7z124n _131n1giz _gy101giz _1wfuwrk5 _16kzwrk5 _9kk3wu06 _cjus1w1g _9k2r1m30 _nhmw1m30 _yl021m30 _eihtd5cb _t9zbd5cb _mqok1w1g _3hsg1w1g _i7ngn7od _9wu1fb2s _1xcoh55r _1t36i7uo _137bh55r _1k7di7uo _97li16jw _12nh9lu1 _1g0517qg _i2igqmo9 _326zi7uo _113p1rpy _1n6t16jw _tgu817qg _1k4716jw _g0lxi7uo _ys4e1rpy _7gp8h55r _1yvqqmo9 _1vwwqmo9 _1rjuqmo9 _1v0lh55r _wmyy17qg _748n17qg _1mfn17qg _1d7e17qg _p2vr17qg _19o6qmo9 _kxov17qg _1np517qg _m2f517qg _1b9t16jw _1tq616jw _1rd216jw _1pbk16jw _k3li16jw _13zt1rpy _2g12fb2s _k86bqmo9 _b5iy1rpy _gti31rpy _1f0g16jw _9d3e17qg _qdia16jw _72uv16jw _13dgkb7n _1707bror _1i3h1txw _16noidpf _h4fuidpf _pp6yidpf _1g4tidpf _11wmidpf _1bx8idpf" data-testid="renderer-code-block" data-ds--code--code-block="" data-code-lang=""&gt;&lt;CODE class="language-"&gt;&lt;/CODE&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P data-local-id="357774022ddc" data-renderer-start-pos="656"&gt;This is a special section in a library part; image(s) stored in it can be referenced by indices, and we typically use these to store small icons for the interface script (not dynamically so far). For syntax, see the picture_reference parameter of the UI_ commands. This would also require your library parts to be editable, but you can make sure they are if you copy them to the temporary folder already mentioned and use them from there (this is quite complicated because you have to unload the original first and add the temporary one). We use this method for custom component collections, where we need to add new lines to the scripts each time a new custom component is created.&lt;/P&gt;
&lt;P data-local-id="f61edd945e14" data-renderer-start-pos="1340"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P data-local-id="f61edd945e14" data-renderer-start-pos="1340"&gt;Hope this helps!&lt;/P&gt;
&lt;P data-local-id="f61edd945e14" data-renderer-start-pos="1340"&gt;Regards,&lt;/P&gt;
&lt;P data-local-id="f61edd945e14" data-renderer-start-pos="1340"&gt;Tamás&lt;/P&gt;</description>
    <pubDate>Mon, 01 Jun 2026 16:13:10 GMT</pubDate>
    <dc:creator>Tamas Polyak</dc:creator>
    <dc:date>2026-06-01T16:13:10Z</dc:date>
    <item>
      <title>Where to store a dynamically changing image ?</title>
      <link>https://community.graphisoft.com/t5/Archicad-C-API/Where-to-store-a-dynamically-changing-image/m-p/700732#M10858</link>
      <description>&lt;P&gt;Hello All&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I have a bit of a tricky one here.&lt;/P&gt;
&lt;P&gt;I have created an add-on that creates a &lt;STRONG&gt;dynamic&lt;/STRONG&gt;image that my library parts UI loads.&lt;/P&gt;
&lt;P&gt;So depending on the shape of the object, the image will change and reflect this shape.&lt;/P&gt;
&lt;P&gt;It works really really well.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The problem is where to keep the image.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;I can keep it in my library folder, but as soon as another user puts the folder in a write-protected position in their file system, it will not work.&lt;/LI&gt;
&lt;LI&gt;I can keep the image in the ArchiCAD data folder, but I don’t want to have to load the ArchiCAD data folder as a library (ACAPI_LibraryPart_Register() only works if saved in an already loaded library).&lt;/LI&gt;
&lt;LI&gt;I can keep it in the embedded library - but this will not work for teamwork and is not working anyway.&lt;/LI&gt;
&lt;LI&gt;I can’t place it as an asset in my add-on - because they are read-only.&lt;/LI&gt;
&lt;LI&gt;I don’t want to write it to the pln file as custom data - that would be stupid yeah?.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Any suggestions would be greatly appreciated. &lt;SPAN&gt;&lt;span class="lia-unicode-emoji" title=":folded_hands:"&gt;🙏&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 24 Apr 2026 13:45:44 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Archicad-C-API/Where-to-store-a-dynamically-changing-image/m-p/700732#M10858</guid>
      <dc:creator>Ben Cohen</dc:creator>
      <dc:date>2026-04-24T13:45:44Z</dc:date>
    </item>
    <item>
      <title>Re: Where to store a dynamically changing image ?</title>
      <link>https://community.graphisoft.com/t5/Archicad-C-API/Where-to-store-a-dynamically-changing-image/m-p/702598#M10882</link>
      <description>&lt;P&gt;Hi Ben,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I've created a support ticket from your question, I'll ask a couple of my colleagues to mull over the problem, and try to come up with ideas.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Regards,&lt;/P&gt;
&lt;P&gt;Tamás&lt;/P&gt;</description>
      <pubDate>Wed, 13 May 2026 21:35:34 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Archicad-C-API/Where-to-store-a-dynamically-changing-image/m-p/702598#M10882</guid>
      <dc:creator>Tamas Polyak</dc:creator>
      <dc:date>2026-05-13T21:35:34Z</dc:date>
    </item>
    <item>
      <title>Re: Where to store a dynamically changing image ?</title>
      <link>https://community.graphisoft.com/t5/Archicad-C-API/Where-to-store-a-dynamically-changing-image/m-p/703012#M10894</link>
      <description>&lt;P&gt;Thanks Tamás.. appreciate it&lt;/P&gt;</description>
      <pubDate>Tue, 19 May 2026 07:49:02 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Archicad-C-API/Where-to-store-a-dynamically-changing-image/m-p/703012#M10894</guid>
      <dc:creator>Ben Cohen</dc:creator>
      <dc:date>2026-05-19T07:49:02Z</dc:date>
    </item>
    <item>
      <title>Re: Where to store a dynamically changing image ?</title>
      <link>https://community.graphisoft.com/t5/Archicad-C-API/Where-to-store-a-dynamically-changing-image/m-p/703114#M10897</link>
      <description>&lt;P&gt;Why is writing it to pln as custom data stupid?&lt;/P&gt;
&lt;P&gt;I use in-memory sqlite that gets saved on demand into project data.&lt;/P&gt;</description>
      <pubDate>Wed, 20 May 2026 04:08:52 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Archicad-C-API/Where-to-store-a-dynamically-changing-image/m-p/703114#M10897</guid>
      <dc:creator>Miha Nahtigal</dc:creator>
      <dc:date>2026-05-20T04:08:52Z</dc:date>
    </item>
    <item>
      <title>Re: Where to store a dynamically changing image ?</title>
      <link>https://community.graphisoft.com/t5/Archicad-C-API/Where-to-store-a-dynamically-changing-image/m-p/704132#M10910</link>
      <description>&lt;P&gt;Hi Ben,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The developers came up with a couple of ideas:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P data-local-id="89fcc8b3ddb5" data-renderer-start-pos="1"&gt;A suggestion is that you should use the temporary folder: generate your images in a subfolder, add it temporarily as a library, and remove it on exit. In this case, the generated images will be lost (or maybe reused if that folder is used again and was not deleted between ArchiCAD sessions), but I suppose you do not need to keep them.&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;API_SpecFolderID specID = API_TemporaryFolderID;  
IO::Location tempFolder;  
ACAPI_ProjectSettings_GetSpecFolder (&amp;amp;specID, &amp;amp;tempFolder);  
&lt;/LI-CODE&gt;
&lt;P data-local-id="89fcc8b3ddb5" data-renderer-start-pos="1"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P data-local-id="faa2a35fd8ea" data-renderer-start-pos="481"&gt;A second idea would be the image section of your library parts.&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;RESULT_IF (selectedObject-&amp;gt;GetGDLPictures ())
{
	modifier.SetGDLPictures (*result);
}&lt;/LI-CODE&gt;
&lt;P data-local-id="faa2a35fd8ea" data-renderer-start-pos="481"&gt;&lt;SPAN class="prismjs _11c819w5 _2rko12b0 _1dqoglyw _1e0c1txw _vwz4gktf _1reo1wug _o572qvpr _1eimjvyg _bfhk187e _syazi7uo _1ozdn7od _7xinn7od _t7aun7od _r28du2gc _tajqu2gc _1ohiu2gc _m802u2gc _i6ntu2gc _1w2xu2gc _1hmyegat _vblregat _vbulegat _196q1j08 _1vbw1j08 _1v9c1j08 _1srnt0uh _18r6myb0 _vyvc1n1a _1d4j1y44 _1f8gstnw _1pzyb3bt _ra6gsb9t _13cdh2mm _1pp0126e _zvy9f705 _qcxof705 _qzn01a66 _j0l11wug _1weckb7n _1na21hna _vsnzgrf3 _x7c815vq _lh0y15vq _1m3815vq _qk1e15vq _12l6ysn8 _uga3ysn8 _mx8b7mnp _1kr87mnp _xo19t94y _1bemt94y _nalpstnw _151dstnw _1exb1q9c _1hgu1q9c _1mgnt94y _nhket94y _h909i8nm _scgayz1z _ipl81e17 _40uk1l04 _i81p1a66 _1gx21e5h _1ls01ule _vm2c1rh5 _12ok1rh5 _rude1ule _1q16glyw _1io6glyw _juomusic _lcwuusic _pyovu2gc _ccm6u2gc _1ascu2gc _1yuau2gc _xr0w1a66 _4io21a66 _euyxusvi _cahfusvi _zhnuidpf _1amdidpf _mbgc124n _bu7z124n _131n1giz _gy101giz _1wfuwrk5 _16kzwrk5 _9kk3wu06 _cjus1w1g _9k2r1m30 _nhmw1m30 _yl021m30 _eihtd5cb _t9zbd5cb _mqok1w1g _3hsg1w1g _i7ngn7od _9wu1fb2s _1xcoh55r _1t36i7uo _137bh55r _1k7di7uo _97li16jw _12nh9lu1 _1g0517qg _i2igqmo9 _326zi7uo _113p1rpy _1n6t16jw _tgu817qg _1k4716jw _g0lxi7uo _ys4e1rpy _7gp8h55r _1yvqqmo9 _1vwwqmo9 _1rjuqmo9 _1v0lh55r _wmyy17qg _748n17qg _1mfn17qg _1d7e17qg _p2vr17qg _19o6qmo9 _kxov17qg _1np517qg _m2f517qg _1b9t16jw _1tq616jw _1rd216jw _1pbk16jw _k3li16jw _13zt1rpy _2g12fb2s _k86bqmo9 _b5iy1rpy _gti31rpy _1f0g16jw _9d3e17qg _qdia16jw _72uv16jw _13dgkb7n _1707bror _1i3h1txw _16noidpf _h4fuidpf _pp6yidpf _1g4tidpf _11wmidpf _1bx8idpf" data-testid="renderer-code-block" data-ds--code--code-block="" data-code-lang=""&gt;&lt;CODE class="language-"&gt;&lt;/CODE&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P data-local-id="357774022ddc" data-renderer-start-pos="656"&gt;This is a special section in a library part; image(s) stored in it can be referenced by indices, and we typically use these to store small icons for the interface script (not dynamically so far). For syntax, see the picture_reference parameter of the UI_ commands. This would also require your library parts to be editable, but you can make sure they are if you copy them to the temporary folder already mentioned and use them from there (this is quite complicated because you have to unload the original first and add the temporary one). We use this method for custom component collections, where we need to add new lines to the scripts each time a new custom component is created.&lt;/P&gt;
&lt;P data-local-id="f61edd945e14" data-renderer-start-pos="1340"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P data-local-id="f61edd945e14" data-renderer-start-pos="1340"&gt;Hope this helps!&lt;/P&gt;
&lt;P data-local-id="f61edd945e14" data-renderer-start-pos="1340"&gt;Regards,&lt;/P&gt;
&lt;P data-local-id="f61edd945e14" data-renderer-start-pos="1340"&gt;Tamás&lt;/P&gt;</description>
      <pubDate>Mon, 01 Jun 2026 16:13:10 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Archicad-C-API/Where-to-store-a-dynamically-changing-image/m-p/704132#M10910</guid>
      <dc:creator>Tamas Polyak</dc:creator>
      <dc:date>2026-06-01T16:13:10Z</dc:date>
    </item>
  </channel>
</rss>

