<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[ZBrush SDK]]></title><description><![CDATA[ZBrush SDK]]></description><link>http://developers.maxon.net/forum/category/55</link><generator>RSS for Node</generator><lastBuildDate>Wed, 15 Jul 2026 00:33:01 GMT</lastBuildDate><atom:link href="http://developers.maxon.net/forum/category/55.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 27 Jun 2026 17:53:46 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Request for programmatic Rename and Delete functionality for SubTool Folders]]></title><description><![CDATA[Hello,
Following my request for SubTool folder management, I would like to suggest two additional features to improve pipeline automation:
Masking Data Access: Please provide read/write access to SubTool masking data.
Layer Manipulation: Please add API support for managing SubTool layers.
Thank you for your consideration.
]]></description><link>http://developers.maxon.net/forum/topic/16424/request-for-programmatic-rename-and-delete-functionality-for-subtool-folders</link><guid isPermaLink="true">http://developers.maxon.net/forum/topic/16424/request-for-programmatic-rename-and-delete-functionality-for-subtool-folders</guid><dc:creator><![CDATA[kewlsheet]]></dc:creator><pubDate>Sat, 27 Jun 2026 17:53:46 GMT</pubDate></item><item><title><![CDATA[How do I reproduce [IKeyPress, SHIFT + CTRL, [CanvasClick,[MouseHPos],[MouseVPos&rsqb;&rsqb;] in ZBrush Python?]]></title><description><![CDATA[<p dir="auto"><strong>I’m trying to convert this ZScript behavior to ZBrush Python:</strong><br />
[IKeyPress, SHIFT + CTRL, [CanvasClick,[MouseHPos],[MouseVPos&rsqb;&rsqb;]</p>
<p dir="auto"><strong>My Python attempt is:</strong><br />
var = zbc.get_mouse_pos()<br />
zbc.press_key("SHIFT + CTRL", lambda: zbc.canvas_click(var[0], var[1]))</p>
<p dir="auto">I’ve also tried several variations of the shortcut string, but none of them work.</p>
<p dir="auto"><strong>What I already know:</strong></p>
<p dir="auto">zbc.canvas_click(var[0], var[1]) works by itself.<br />
The problem only starts when I try to combine it with zbc.press_key().</p>
<p dir="auto">I already have a workaround by using zbc.press("macro button with [IKeyPress, SHIFT + CTRL, [CanvasClick,[MouseHPos],[MouseVPos&rsqb;&rsqb;] inside").</p>
<p dir="auto"><strong>What works and what doesn't:</strong><br />
[Fails] zbc.press_key("CTRL+z")<br />
[Works] zbc.press_key("N", lambda: press("Document:New Document")) (don't know what "N" does)<br />
[Works] zbc.press_key("e", lambda: print("Scale mode enabled")) (don't know what "e" does)<br />
[Works] zbc.press_key("SHIFT+p", lambda: zbc.press("Tool:Subtool:MoveUp")) (correctly simulates moving subtool to the top, i had to add a key ("p") to the shift modifier for it to work)</p>
<p dir="auto"><strong>What i would like to have clarified:</strong><br />
Is there a supported Python equivalent to ctrl + shift click?<br />
If zbc.press_key() is the wrong tool, what is it actually doing internally?<br />
Does it simulate real keyboard state?<br />
Does it support modifier-only combinations like SHIFT+CTRL without a normal key?<br />
Is this expected to fail with canvas_click() specifically?<br />
In other words, does press_key() work only for certain commands, but not for canvas interaction?<br />
I’m trying to avoid guesses here. A concrete answer about what press_key() can and cannot do would help a lot.</p>
]]></description><link>http://developers.maxon.net/forum/topic/16405/how-do-i-reproduce-ikeypress-shift-ctrl-canvasclick-mousehpos-mousevpos-in-zbrush-python</link><guid isPermaLink="true">http://developers.maxon.net/forum/topic/16405/how-do-i-reproduce-ikeypress-shift-ctrl-canvasclick-mousehpos-mousevpos-in-zbrush-python</guid><dc:creator><![CDATA[pocacola]]></dc:creator><pubDate>Tue, 21 Apr 2026 17:57:36 GMT</pubDate></item><item><title><![CDATA[Load *.py scripts on startup.]]></title><description><![CDATA[Hi @diegoev2026
Welcome to the Maxon developers forum and its community, it is great to have you with us!
Getting Started
Before creating your next postings, we would recommend making yourself accustomed with our forum and support procedures. You did not do anything wrong, we point all new users to these rules.

Forum Overview: Provides a broad overview of the fundamental structure and rules of this forum, such as the purpose of the different sub-forums or the fact that we will ban users who engage in hate speech or harassment.
Support Procedures: Provides a more in detail overview of how we provide technical support for APIs here. This topic will tell you how to ask good questions and limits of our technical support.
Forum Features: Provides an overview of the technical features of this forum, such as Markdown markup or file uploads.

It is strongly recommended to read the first two topics carefully, especially the section Support Procedures: How to Ask Questions.
About your Question
Good question, and indeed we wouldn’t recommend modifying the init.py file in the installation directory.
Instead, ZBrush provides a dedicated folder for this type of user customization, you can quickly navigate to it from the ZBrush menu: Preferences &gt; Asset Directory &gt; Open Directory.
You can find more details about that here, if you are looking for further detail : https://help.maxon.net/zbr/en-us/Content/html/user-guide/customizing-zbrush/user-content/user-content.html
In order to execute your own script at startup, it should be sufficient to replicate the setup you see in the ZBrush directory by creating a Python directory inside your asset directory with an init.py in it.
If you are using the default location for the asset directory, the path would look something like C:\Users\[UserName]\AppData\Roaming\Maxon\ZBrush_[HashValue]\Python\init.py.
On top of the init.py scripts, ZBrush also allows running Python scripts as plugins from a directory you can configure through the environment variable in ZBRUSH_PLUGIN_PATH. You can find more details on how to set those up here: https://developers.maxon.net/docs/zbrush/py/2026_1_0/manuals/python_environment.html#zbrush-plugin-path
The user asset directory I mentioned above is also part of the ZBRUSH_PLUGIN_PATH by default, meaning you can just drop your plugins in there.
Let us know if you need any further clarification!
Regards,
Davide
]]></description><link>http://developers.maxon.net/forum/topic/16402/load-.py-scripts-on-startup.</link><guid isPermaLink="true">http://developers.maxon.net/forum/topic/16402/load-.py-scripts-on-startup.</guid><dc:creator><![CDATA[davide]]></dc:creator><pubDate>Mon, 13 Apr 2026 14:35:52 GMT</pubDate></item><item><title><![CDATA[Python SDK Questions - FBX Import and Folder &#x2F; Subtool Management]]></title><description><![CDATA[新的py我不知道，但是旧的  我觉得能达到你的要求，虽然我没这样尝试。一般子工具重命名有两种方式： 一种 通过设置 FileNameSetNext 导出空文件 的方式，利用程序导出时自动改名来重命名。还有一个是 调用ZFileUtils64.dll中的 重命名函数，修改：
···
// 设置要使用的名称，而不是询问用户
// @str：将替换为用户输入的文本/字符串
[RoutineDef, ZFU_RenameSetNext,
[FileExecute, [Var, dllPath], RenameSetNext, str]
, str]
// 通过为请求重命名框的按钮提供路径来重命名 “something”
// @buttonPath：要求用户重命名“某物”的按钮的路径
// @str：将替换为用户输入的文本/字符串
[RoutineDef, ZFU_RenameFromButtonPath,
[If, (([IExists, buttonPath]) &amp;&amp; ([IsEnabled, buttonPath])),
[FileExecute, [Var, dllPath], RenameSetNext, str]
[IPress, buttonPath]
]
, buttonPath, str]
// 重命名当前 SubTool
// @str：新的 SubTool 名称
[RoutineDef, ZFU_RenameCurrentSubTool,
[RoutineCall, ZFU_RenameFromButtonPath, "Tool:SubTool:Rename", str]
, str]
···
个人建议 ：批量重命名还是在外部处理好 再导入最佳。而且ZB支持bat 等外部执行方式。
]]></description><link>http://developers.maxon.net/forum/topic/16378/python-sdk-questions-fbx-import-and-folder-subtool-management</link><guid isPermaLink="true">http://developers.maxon.net/forum/topic/16378/python-sdk-questions-fbx-import-and-folder-subtool-management</guid><dc:creator><![CDATA[wtz2025]]></dc:creator><pubDate>Wed, 04 Feb 2026 17:48:55 GMT</pubDate></item><item><title><![CDATA[ZBP file format]]></title><description><![CDATA[Hi @madfx,
Welcome to the Maxon developers forum and its community, it is great to have you with us!
Getting Started
Before creating your next postings, we would recommend making yourself accustomed with our forum and support procedures. You did not do anything wrong, we point all new users to these rules.

Forum Overview: Provides a broad overview of the fundamental structure and rules of this forum, such as the purpose of the different sub-forums or the fact that we will ban users who engage in hate speech or harassment.
Support Procedures: Provides a more in detail overview of how we provide technical support for APIs here. This topic will tell you how to ask good questions and limits of our technical support.
Forum Features: Provides an overview of the technical features of this forum, such as Markdown markup or file uploads.

It is strongly recommended to read the first two topics carefully, especially the section Support Procedures: How to Ask Questions.
About your First Question
I'm sorry for the delayed answer.
Unfortunately there's no existing public API that would allow you to do that.
Cheers,
Ilia
]]></description><link>http://developers.maxon.net/forum/topic/16234/zbp-file-format</link><guid isPermaLink="true">http://developers.maxon.net/forum/topic/16234/zbp-file-format</guid><dc:creator><![CDATA[i_mazlov]]></dc:creator><pubDate>Tue, 13 May 2025 22:53:31 GMT</pubDate></item><item><title><![CDATA[Discussion on the feasibility of exporting FBX through zscript]]></title><description><![CDATA[Hey @qq475519905,
sorry for the delay. As I said in the beginning, you can implement your own serializer using GoZ. But there is no dedicated exporter API in ZScript. I assume you are using some RoutineCall to achieve what you are doing. You cannot escape any GUI associated with such call.
Cheers,
Ferdinand
]]></description><link>http://developers.maxon.net/forum/topic/16086/discussion-on-the-feasibility-of-exporting-fbx-through-zscript</link><guid isPermaLink="true">http://developers.maxon.net/forum/topic/16086/discussion-on-the-feasibility-of-exporting-fbx-through-zscript</guid><dc:creator><![CDATA[ferdinand]]></dc:creator><pubDate>Thu, 06 Mar 2025 08:53:52 GMT</pubDate></item><item><title><![CDATA[customize ZBrush add-on]]></title><description><![CDATA[@m_adam thanks for your prompt response. I'm looking forward to hearing from you.
]]></description><link>http://developers.maxon.net/forum/topic/16039/customize-zbrush-add-on</link><guid isPermaLink="true">http://developers.maxon.net/forum/topic/16039/customize-zbrush-add-on</guid><dc:creator><![CDATA[LeonGao007]]></dc:creator><pubDate>Mon, 24 Feb 2025 12:20:03 GMT</pubDate></item><item><title><![CDATA[ZBrush 2024 FileExecute Issue]]></title><description><![CDATA[Thank you for the detailed reply, @i_mazlov!
I was unable to determine the root cause of the issue, however I was able to work around it by preloading direct dependencies with a FileExecute call and using the SearchPath Windows function to locate the runtime dependency DLLs and pass the absolute paths to LoadLibrary (I'm aware this is not recommended, but should be fine for this internally used plugin).
I couldn't find anything in the newly added Maxon options that appeared to affect the loading behavior.  My only remaining theory is that the new licensing process is indirectly triggering this behavior:
LoadLibrary function returns STATUS_DLL_NOT_FOUND error on impersonate thread in Windows
https://learn.microsoft.com/en-us/troubleshoot/windows-client/setup-upgrade-and-drivers/loadlibrary-function-returns-status-dll-not-found-error-impersonate-thread
Thanks again!
Nick
]]></description><link>http://developers.maxon.net/forum/topic/15864/zbrush-2024-fileexecute-issue</link><guid isPermaLink="true">http://developers.maxon.net/forum/topic/15864/zbrush-2024-fileexecute-issue</guid><dc:creator><![CDATA[blizz_nsm]]></dc:creator><pubDate>Wed, 11 Dec 2024 19:35:38 GMT</pubDate></item><item><title><![CDATA[SDK ZBRUSH DOWNLOAD]]></title><description><![CDATA[Hey @VICTOR_PEREZ,
The ZBrush GoZ SDK is the only ZBrush SDK there currently is. There is no dedicated C++ SDK for ZBrush at the moment. Although most GoZ bridges are realized in C++ due to the hefty throughput requirements that come with geometry data as dense as ZBrush data usually is.
Cheers,
Ferdinand
]]></description><link>http://developers.maxon.net/forum/topic/15418/sdk-zbrush-download</link><guid isPermaLink="true">http://developers.maxon.net/forum/topic/15418/sdk-zbrush-download</guid><dc:creator><![CDATA[ferdinand]]></dc:creator><pubDate>Mon, 04 Mar 2024 13:42:20 GMT</pubDate></item></channel></rss>