Files
freecad-robust-mcp-fc111/latest/MCP_TOOLS_REFERENCE/index.html
T

409 lines
174 KiB
HTML

<!DOCTYPE html><html lang="en" class="no-js"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta name="description" content="FreeCAD Robust MCP Suite - MCP Server, Bridge Workbench, and Macros for AI assistant integration"><link href="https://github.com/spkane/freecad-addon-robust-mcp-server/latest/MCP_TOOLS_REFERENCE/" rel="canonical"><link href="../USER_GUIDE/" rel="prev"><link href="../COMPARISON/" rel="next"><link rel="icon" href="../assets/images/favicon.png"><meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.1"><title>Tools Reference - FreeCAD Robust MCP Suite</title><link rel="stylesheet" href="../assets/stylesheets/main.484c7ddc.min.css"><link rel="stylesheet" href="../assets/stylesheets/palette.ab4e12ef.min.css"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&amp;display=fallback"><style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style><link rel="stylesheet" href="../css/timeago.css"><link rel="stylesheet" href="../assets/_mkdocstrings.css"><script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script><link href="../assets/stylesheets/glightbox.min.css" rel="stylesheet"><script src="../assets/javascripts/glightbox.min.js"></script><style id="glightbox-style">
html.glightbox-open { overflow: initial; height: 100%; }
.gslide-title { margin-top: 0px; user-select: text; }
.gslide-desc { color: #666; user-select: text; }
.gslide-image img { background: white; }
.gscrollbar-fixer { padding-right: 15px; }
.gdesc-inner { font-size: 0.75rem; }
body[data-md-color-scheme="slate"] .gdesc-inner { background: var(--md-default-bg-color); }
body[data-md-color-scheme="slate"] .gslide-title { color: var(--md-default-fg-color); }
body[data-md-color-scheme="slate"] .gslide-desc { color: var(--md-default-fg-color); }
</style></head> <body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="deep-purple" data-md-color-accent="purple"> <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> <label class="md-overlay" for="__drawer"></label> <div data-md-component="skip"> <a href="#freecad-robust-mcp-server-tools-reference" class="md-skip"> Skip to content </a> </div> <div data-md-component="announce"> </div> <div data-md-color-scheme="default" data-md-component="outdated" hidden> </div> <header class="md-header" data-md-component="header"> <nav class="md-header__inner md-grid" aria-label="Header"> <a href=".." title="FreeCAD Robust MCP Suite" class="md-header__button md-logo" aria-label="FreeCAD Robust MCP Suite" data-md-component="logo"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"></path></svg> </a> <label class="md-header__button md-icon" for="__drawer"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"></path></svg> </label> <div class="md-header__title" data-md-component="header-title"> <div class="md-header__ellipsis"> <div class="md-header__topic"> <span class="md-ellipsis"> FreeCAD Robust MCP Suite </span> </div> <div class="md-header__topic" data-md-component="header-topic"> <span class="md-ellipsis"> Tools Reference </span> </div> </div> </div> <form class="md-header__option" data-md-component="palette"> <input class="md-option" data-md-color-media data-md-color-scheme="slate" data-md-color-primary="deep-purple" data-md-color-accent="purple" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_0"> <label class="md-header__button md-icon" title="Switch to light mode" for="__palette_1" hidden> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"></path></svg> </label> <input class="md-option" data-md-color-media data-md-color-scheme="default" data-md-color-primary="deep-purple" data-md-color-accent="purple" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_1"> <label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_0" hidden> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"></path></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for="__search"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"></path></svg> </label> <div class="md-search" data-md-component="search" role="dialog"> <label class="md-search__overlay" for="__search"></label> <div class="md-search__inner" role="search"> <form class="md-search__form" name="search"> <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> <label class="md-search__icon md-icon" for="__search"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"></path></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"></path></svg> </label> <nav class="md-search__options" aria-label="Search"> <a href="javascript:void(0)" class="md-search__icon md-icon" title="Share" aria-label="Share" data-clipboard data-clipboard-text data-md-component="search-share" tabindex="-1"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.15c-.05.21-.08.43-.08.66 0 1.61 1.31 2.91 2.92 2.91s2.92-1.3 2.92-2.91A2.92 2.92 0 0 0 18 16.08"></path></svg> </a> <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"></path></svg> </button> </nav> <div class="md-search__suggest" data-md-component="search-suggest"></div> </form> <div class="md-search__output"> <div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix> <div class="md-search-result" data-md-component="search-result"> <div class="md-search-result__meta"> Initializing search </div> <ol class="md-search-result__list" role="presentation"></ol> </div> </div> </div> </div> </div> <div class="md-header__source"> <a href="https://github.com/spkane/freecad-addon-robust-mcp-server" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"></path></svg> </div> <div class="md-source__repository"> spkane/freecad-addon-robust-mcp-server </div> </a> </div> </nav> </header> <div class="md-container" data-md-component="container"> <nav class="md-tabs" aria-label="Tabs" data-md-component="tabs"> <div class="md-grid"> <ul class="md-tabs__list"> <li class="md-tabs__item"> <a href=".." class="md-tabs__link"> Home </a> </li> <li class="md-tabs__item"> <a href="../getting-started/installation/" class="md-tabs__link"> Getting Started </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href="../guide/connection-modes/" class="md-tabs__link"> User Guide </a> </li> <li class="md-tabs__item"> <a href="../COMPARISON/" class="md-tabs__link"> Comparisons </a> </li> <li class="md-tabs__item"> <a href="../api/server/" class="md-tabs__link"> API Reference </a> </li> <li class="md-tabs__item"> <a href="../development/contributing/" class="md-tabs__link"> Development </a> </li> </ul> </div> </nav> <main class="md-main" data-md-component="main"> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation"> <div class="md-sidebar__scrollwrap"> <div class="md-sidebar__inner"> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0"> <label class="md-nav__title" for="__drawer"> <a href=".." title="FreeCAD Robust MCP Suite" class="md-nav__button md-logo" aria-label="FreeCAD Robust MCP Suite" data-md-component="logo"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"></path></svg> </a> FreeCAD Robust MCP Suite </label> <div class="md-nav__source"> <a href="https://github.com/spkane/freecad-addon-robust-mcp-server" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"></path></svg> </div> <div class="md-source__repository"> spkane/freecad-addon-robust-mcp-server </div> </a> </div> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href=".." class="md-nav__link"> <span class="md-ellipsis"> Home </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2"> <label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0"> <span class="md-ellipsis"> Getting Started </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_2"> <span class="md-nav__icon md-icon"></span> Getting Started </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../getting-started/installation/" class="md-nav__link"> <span class="md-ellipsis"> Installation </span> </a> </li> <li class="md-nav__item"> <a href="../getting-started/configuration/" class="md-nav__link"> <span class="md-ellipsis"> Configuration </span> </a> </li> <li class="md-nav__item"> <a href="../getting-started/quickstart/" class="md-nav__link"> <span class="md-ellipsis"> Quick Start </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" checked> <label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex> <span class="md-ellipsis"> User Guide </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="true"> <label class="md-nav__title" for="__nav_3"> <span class="md-nav__icon md-icon"></span> User Guide </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../guide/connection-modes/" class="md-nav__link"> <span class="md-ellipsis"> Connection Modes </span> </a> </li> <li class="md-nav__item"> <a href="../guide/workbench/" class="md-nav__link"> <span class="md-ellipsis"> Robust MCP Bridge Workbench </span> </a> </li> <li class="md-nav__item"> <a href="../guide/macros/" class="md-nav__link"> <span class="md-ellipsis"> MCP Macro Tools </span> </a> </li> <li class="md-nav__item"> <a href="../guide/tools/" class="md-nav__link"> <span class="md-ellipsis"> Tools Overview </span> </a> </li> <li class="md-nav__item"> <a href="../guide/resources/" class="md-nav__link"> <span class="md-ellipsis"> MCP Resources </span> </a> </li> <li class="md-nav__item"> <a href="../USER_GUIDE/" class="md-nav__link"> <span class="md-ellipsis"> Detailed User Guide </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc"> <label class="md-nav__link md-nav__link--active" for="__toc"> <span class="md-ellipsis"> Tools Reference </span> <span class="md-nav__icon md-icon"></span> </label> <a href="./" class="md-nav__link md-nav__link--active"> <span class="md-ellipsis"> Tools Reference </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class="md-nav__title" for="__toc"> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> <li class="md-nav__item"> <a href="#overview" class="md-nav__link"> <span class="md-ellipsis"> Overview </span> </a> </li> <li class="md-nav__item"> <a href="#execution-tools" class="md-nav__link"> <span class="md-ellipsis"> Execution Tools </span> </a> <nav class="md-nav" aria-label="Execution Tools"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#execute_python" class="md-nav__link"> <span class="md-ellipsis"> execute_python </span> </a> </li> <li class="md-nav__item"> <a href="#get_freecad_version" class="md-nav__link"> <span class="md-ellipsis"> get_freecad_version </span> </a> </li> <li class="md-nav__item"> <a href="#get_connection_status" class="md-nav__link"> <span class="md-ellipsis"> get_connection_status </span> </a> </li> <li class="md-nav__item"> <a href="#get_console_output" class="md-nav__link"> <span class="md-ellipsis"> get_console_output </span> </a> </li> <li class="md-nav__item"> <a href="#get_mcp_server_environment" class="md-nav__link"> <span class="md-ellipsis"> get_mcp_server_environment </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#document-tools" class="md-nav__link"> <span class="md-ellipsis"> Document Tools </span> </a> <nav class="md-nav" aria-label="Document Tools"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#list_documents" class="md-nav__link"> <span class="md-ellipsis"> list_documents </span> </a> </li> <li class="md-nav__item"> <a href="#get_active_document" class="md-nav__link"> <span class="md-ellipsis"> get_active_document </span> </a> </li> <li class="md-nav__item"> <a href="#create_document" class="md-nav__link"> <span class="md-ellipsis"> create_document </span> </a> </li> <li class="md-nav__item"> <a href="#open_document" class="md-nav__link"> <span class="md-ellipsis"> open_document </span> </a> </li> <li class="md-nav__item"> <a href="#save_document" class="md-nav__link"> <span class="md-ellipsis"> save_document </span> </a> </li> <li class="md-nav__item"> <a href="#close_document" class="md-nav__link"> <span class="md-ellipsis"> close_document </span> </a> </li> <li class="md-nav__item"> <a href="#recompute_document" class="md-nav__link"> <span class="md-ellipsis"> recompute_document </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#object-tools" class="md-nav__link"> <span class="md-ellipsis"> Object Tools </span> </a> <nav class="md-nav" aria-label="Object Tools"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#primitive-creation" class="md-nav__link"> <span class="md-ellipsis"> Primitive Creation </span> </a> </li> <li class="md-nav__item"> <a href="#object-management" class="md-nav__link"> <span class="md-ellipsis"> Object Management </span> </a> </li> <li class="md-nav__item"> <a href="#boolean-operations" class="md-nav__link"> <span class="md-ellipsis"> Boolean Operations </span> </a> </li> <li class="md-nav__item"> <a href="#transformations" class="md-nav__link"> <span class="md-ellipsis"> Transformations </span> </a> </li> <li class="md-nav__item"> <a href="#selection-gui-mode" class="md-nav__link"> <span class="md-ellipsis"> Selection (GUI Mode) </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#partdesign-tools" class="md-nav__link"> <span class="md-ellipsis"> PartDesign Tools </span> </a> <nav class="md-nav" aria-label="PartDesign Tools"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#bodies-and-sketches" class="md-nav__link"> <span class="md-ellipsis"> Bodies and Sketches </span> </a> </li> <li class="md-nav__item"> <a href="#sketch-geometry" class="md-nav__link"> <span class="md-ellipsis"> Sketch Geometry </span> </a> </li> <li class="md-nav__item"> <a href="#additive-features" class="md-nav__link"> <span class="md-ellipsis"> Additive Features </span> </a> </li> <li class="md-nav__item"> <a href="#subtractive-features" class="md-nav__link"> <span class="md-ellipsis"> Subtractive Features </span> </a> </li> <li class="md-nav__item"> <a href="#edge-operations" class="md-nav__link"> <span class="md-ellipsis"> Edge Operations </span> </a> </li> <li class="md-nav__item"> <a href="#patterns" class="md-nav__link"> <span class="md-ellipsis"> Patterns </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#export-tools" class="md-nav__link"> <span class="md-ellipsis"> Export Tools </span> </a> <nav class="md-nav" aria-label="Export Tools"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#export_step" class="md-nav__link"> <span class="md-ellipsis"> export_step </span> </a> </li> <li class="md-nav__item"> <a href="#export_stl" class="md-nav__link"> <span class="md-ellipsis"> export_stl </span> </a> </li> <li class="md-nav__item"> <a href="#export_3mf" class="md-nav__link"> <span class="md-ellipsis"> export_3mf </span> </a> </li> <li class="md-nav__item"> <a href="#export_obj" class="md-nav__link"> <span class="md-ellipsis"> export_obj </span> </a> </li> <li class="md-nav__item"> <a href="#export_iges" class="md-nav__link"> <span class="md-ellipsis"> export_iges </span> </a> </li> <li class="md-nav__item"> <a href="#import_step" class="md-nav__link"> <span class="md-ellipsis"> import_step </span> </a> </li> <li class="md-nav__item"> <a href="#import_stl" class="md-nav__link"> <span class="md-ellipsis"> import_stl </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#view-tools" class="md-nav__link"> <span class="md-ellipsis"> View Tools </span> </a> <nav class="md-nav" aria-label="View Tools"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#screenshots" class="md-nav__link"> <span class="md-ellipsis"> Screenshots </span> </a> </li> <li class="md-nav__item"> <a href="#view-control" class="md-nav__link"> <span class="md-ellipsis"> View Control </span> </a> </li> <li class="md-nav__item"> <a href="#object-appearance" class="md-nav__link"> <span class="md-ellipsis"> Object Appearance </span> </a> </li> <li class="md-nav__item"> <a href="#workbenches" class="md-nav__link"> <span class="md-ellipsis"> Workbenches </span> </a> </li> <li class="md-nav__item"> <a href="#undoredo" class="md-nav__link"> <span class="md-ellipsis"> Undo/Redo </span> </a> </li> <li class="md-nav__item"> <a href="#parts-library" class="md-nav__link"> <span class="md-ellipsis"> Parts Library </span> </a> </li> <li class="md-nav__item"> <a href="#utility" class="md-nav__link"> <span class="md-ellipsis"> Utility </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#macro-tools" class="md-nav__link"> <span class="md-ellipsis"> Macro Tools </span> </a> <nav class="md-nav" aria-label="Macro Tools"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#list_macros" class="md-nav__link"> <span class="md-ellipsis"> list_macros </span> </a> </li> <li class="md-nav__item"> <a href="#run_macro" class="md-nav__link"> <span class="md-ellipsis"> run_macro </span> </a> </li> <li class="md-nav__item"> <a href="#create_macro" class="md-nav__link"> <span class="md-ellipsis"> create_macro </span> </a> </li> <li class="md-nav__item"> <a href="#read_macro" class="md-nav__link"> <span class="md-ellipsis"> read_macro </span> </a> </li> <li class="md-nav__item"> <a href="#delete_macro" class="md-nav__link"> <span class="md-ellipsis"> delete_macro </span> </a> </li> <li class="md-nav__item"> <a href="#create_macro_from_template" class="md-nav__link"> <span class="md-ellipsis"> create_macro_from_template </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#gui-vs-headless-mode" class="md-nav__link"> <span class="md-ellipsis"> GUI vs Headless Mode </span> </a> </li> <li class="md-nav__item"> <a href="#error-handling" class="md-nav__link"> <span class="md-ellipsis"> Error Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4"> <label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0"> <span class="md-ellipsis"> Comparisons </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_4"> <span class="md-nav__icon md-icon"></span> Comparisons </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../COMPARISON/" class="md-nav__link"> <span class="md-ellipsis"> Other Implementations </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5"> <label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0"> <span class="md-ellipsis"> API Reference </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_5"> <span class="md-nav__icon md-icon"></span> API Reference </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../api/server/" class="md-nav__link"> <span class="md-ellipsis"> Server </span> </a> </li> <li class="md-nav__item"> <a href="../api/bridge/" class="md-nav__link"> <span class="md-ellipsis"> Bridge </span> </a> </li> <li class="md-nav__item"> <a href="../api/config/" class="md-nav__link"> <span class="md-ellipsis"> Config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6"> <label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0"> <span class="md-ellipsis"> Development </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_6"> <span class="md-nav__icon md-icon"></span> Development </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../development/contributing/" class="md-nav__link"> <span class="md-ellipsis"> Contributing </span> </a> </li> <li class="md-nav__item"> <a href="../development/architecture/" class="md-nav__link"> <span class="md-ellipsis"> Architecture </span> </a> </li> <li class="md-nav__item"> <a href="../development/architecture-detailed/" class="md-nav__link"> <span class="md-ellipsis"> Detailed Architecture </span> </a> </li> <li class="md-nav__item"> <a href="../development/releasing/" class="md-nav__link"> <span class="md-ellipsis"> Release Process </span> </a> </li> <li class="md-nav__item"> <a href="../development/mkdocs-guide/" class="md-nav__link"> <span class="md-ellipsis"> MkDocs Guide </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc"> <div class="md-sidebar__scrollwrap"> <div class="md-sidebar__inner"> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class="md-nav__title" for="__toc"> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> <li class="md-nav__item"> <a href="#overview" class="md-nav__link"> <span class="md-ellipsis"> Overview </span> </a> </li> <li class="md-nav__item"> <a href="#execution-tools" class="md-nav__link"> <span class="md-ellipsis"> Execution Tools </span> </a> <nav class="md-nav" aria-label="Execution Tools"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#execute_python" class="md-nav__link"> <span class="md-ellipsis"> execute_python </span> </a> </li> <li class="md-nav__item"> <a href="#get_freecad_version" class="md-nav__link"> <span class="md-ellipsis"> get_freecad_version </span> </a> </li> <li class="md-nav__item"> <a href="#get_connection_status" class="md-nav__link"> <span class="md-ellipsis"> get_connection_status </span> </a> </li> <li class="md-nav__item"> <a href="#get_console_output" class="md-nav__link"> <span class="md-ellipsis"> get_console_output </span> </a> </li> <li class="md-nav__item"> <a href="#get_mcp_server_environment" class="md-nav__link"> <span class="md-ellipsis"> get_mcp_server_environment </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#document-tools" class="md-nav__link"> <span class="md-ellipsis"> Document Tools </span> </a> <nav class="md-nav" aria-label="Document Tools"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#list_documents" class="md-nav__link"> <span class="md-ellipsis"> list_documents </span> </a> </li> <li class="md-nav__item"> <a href="#get_active_document" class="md-nav__link"> <span class="md-ellipsis"> get_active_document </span> </a> </li> <li class="md-nav__item"> <a href="#create_document" class="md-nav__link"> <span class="md-ellipsis"> create_document </span> </a> </li> <li class="md-nav__item"> <a href="#open_document" class="md-nav__link"> <span class="md-ellipsis"> open_document </span> </a> </li> <li class="md-nav__item"> <a href="#save_document" class="md-nav__link"> <span class="md-ellipsis"> save_document </span> </a> </li> <li class="md-nav__item"> <a href="#close_document" class="md-nav__link"> <span class="md-ellipsis"> close_document </span> </a> </li> <li class="md-nav__item"> <a href="#recompute_document" class="md-nav__link"> <span class="md-ellipsis"> recompute_document </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#object-tools" class="md-nav__link"> <span class="md-ellipsis"> Object Tools </span> </a> <nav class="md-nav" aria-label="Object Tools"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#primitive-creation" class="md-nav__link"> <span class="md-ellipsis"> Primitive Creation </span> </a> </li> <li class="md-nav__item"> <a href="#object-management" class="md-nav__link"> <span class="md-ellipsis"> Object Management </span> </a> </li> <li class="md-nav__item"> <a href="#boolean-operations" class="md-nav__link"> <span class="md-ellipsis"> Boolean Operations </span> </a> </li> <li class="md-nav__item"> <a href="#transformations" class="md-nav__link"> <span class="md-ellipsis"> Transformations </span> </a> </li> <li class="md-nav__item"> <a href="#selection-gui-mode" class="md-nav__link"> <span class="md-ellipsis"> Selection (GUI Mode) </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#partdesign-tools" class="md-nav__link"> <span class="md-ellipsis"> PartDesign Tools </span> </a> <nav class="md-nav" aria-label="PartDesign Tools"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#bodies-and-sketches" class="md-nav__link"> <span class="md-ellipsis"> Bodies and Sketches </span> </a> </li> <li class="md-nav__item"> <a href="#sketch-geometry" class="md-nav__link"> <span class="md-ellipsis"> Sketch Geometry </span> </a> </li> <li class="md-nav__item"> <a href="#additive-features" class="md-nav__link"> <span class="md-ellipsis"> Additive Features </span> </a> </li> <li class="md-nav__item"> <a href="#subtractive-features" class="md-nav__link"> <span class="md-ellipsis"> Subtractive Features </span> </a> </li> <li class="md-nav__item"> <a href="#edge-operations" class="md-nav__link"> <span class="md-ellipsis"> Edge Operations </span> </a> </li> <li class="md-nav__item"> <a href="#patterns" class="md-nav__link"> <span class="md-ellipsis"> Patterns </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#export-tools" class="md-nav__link"> <span class="md-ellipsis"> Export Tools </span> </a> <nav class="md-nav" aria-label="Export Tools"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#export_step" class="md-nav__link"> <span class="md-ellipsis"> export_step </span> </a> </li> <li class="md-nav__item"> <a href="#export_stl" class="md-nav__link"> <span class="md-ellipsis"> export_stl </span> </a> </li> <li class="md-nav__item"> <a href="#export_3mf" class="md-nav__link"> <span class="md-ellipsis"> export_3mf </span> </a> </li> <li class="md-nav__item"> <a href="#export_obj" class="md-nav__link"> <span class="md-ellipsis"> export_obj </span> </a> </li> <li class="md-nav__item"> <a href="#export_iges" class="md-nav__link"> <span class="md-ellipsis"> export_iges </span> </a> </li> <li class="md-nav__item"> <a href="#import_step" class="md-nav__link"> <span class="md-ellipsis"> import_step </span> </a> </li> <li class="md-nav__item"> <a href="#import_stl" class="md-nav__link"> <span class="md-ellipsis"> import_stl </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#view-tools" class="md-nav__link"> <span class="md-ellipsis"> View Tools </span> </a> <nav class="md-nav" aria-label="View Tools"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#screenshots" class="md-nav__link"> <span class="md-ellipsis"> Screenshots </span> </a> </li> <li class="md-nav__item"> <a href="#view-control" class="md-nav__link"> <span class="md-ellipsis"> View Control </span> </a> </li> <li class="md-nav__item"> <a href="#object-appearance" class="md-nav__link"> <span class="md-ellipsis"> Object Appearance </span> </a> </li> <li class="md-nav__item"> <a href="#workbenches" class="md-nav__link"> <span class="md-ellipsis"> Workbenches </span> </a> </li> <li class="md-nav__item"> <a href="#undoredo" class="md-nav__link"> <span class="md-ellipsis"> Undo/Redo </span> </a> </li> <li class="md-nav__item"> <a href="#parts-library" class="md-nav__link"> <span class="md-ellipsis"> Parts Library </span> </a> </li> <li class="md-nav__item"> <a href="#utility" class="md-nav__link"> <span class="md-ellipsis"> Utility </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#macro-tools" class="md-nav__link"> <span class="md-ellipsis"> Macro Tools </span> </a> <nav class="md-nav" aria-label="Macro Tools"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#list_macros" class="md-nav__link"> <span class="md-ellipsis"> list_macros </span> </a> </li> <li class="md-nav__item"> <a href="#run_macro" class="md-nav__link"> <span class="md-ellipsis"> run_macro </span> </a> </li> <li class="md-nav__item"> <a href="#create_macro" class="md-nav__link"> <span class="md-ellipsis"> create_macro </span> </a> </li> <li class="md-nav__item"> <a href="#read_macro" class="md-nav__link"> <span class="md-ellipsis"> read_macro </span> </a> </li> <li class="md-nav__item"> <a href="#delete_macro" class="md-nav__link"> <span class="md-ellipsis"> delete_macro </span> </a> </li> <li class="md-nav__item"> <a href="#create_macro_from_template" class="md-nav__link"> <span class="md-ellipsis"> create_macro_from_template </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#gui-vs-headless-mode" class="md-nav__link"> <span class="md-ellipsis"> GUI vs Headless Mode </span> </a> </li> <li class="md-nav__item"> <a href="#error-handling" class="md-nav__link"> <span class="md-ellipsis"> Error Handling </span> </a> </li> </ul> </nav> </div> </div> </div> <div class="md-content" data-md-component="content"> <article class="md-content__inner md-typeset"> <h1 id="freecad-robust-mcp-server-tools-reference">FreeCAD Robust MCP Server Tools Reference<a class="headerlink" href="#freecad-robust-mcp-server-tools-reference" title="Permanent link"></a></h1> <p>This document provides a comprehensive reference for all MCP tools available in the FreeCAD Robust MCP Server.</p> <hr> <h2 id="overview">Overview<a class="headerlink" href="#overview" title="Permanent link"></a></h2> <p>The FreeCAD Robust MCP Server exposes tools organized into the following categories:</p> <table> <thead> <tr> <th>Category</th> <th>Description</th> <th>Tool Count</th> </tr> </thead> <tbody> <tr> <td><a href="#execution-tools">Execution</a></td> <td>Python execution and system info</td> <td>5</td> </tr> <tr> <td><a href="#document-tools">Documents</a></td> <td>Document management</td> <td>7</td> </tr> <tr> <td><a href="#object-tools">Objects</a></td> <td>Object creation and manipulation</td> <td>22</td> </tr> <tr> <td><a href="#partdesign-tools">PartDesign</a></td> <td>Parametric solid modeling</td> <td>20</td> </tr> <tr> <td><a href="#export-tools">Export</a></td> <td>Import/export operations</td> <td>7</td> </tr> <tr> <td><a href="#view-tools">View</a></td> <td>View control and screenshots</td> <td>18</td> </tr> <tr> <td><a href="#macro-tools">Macros</a></td> <td>Macro management</td> <td>6</td> </tr> <tr> <td><strong>Total</strong></td> <td></td> <td><strong>85</strong></td> </tr> </tbody> </table> <hr> <h2 id="execution-tools">Execution Tools<a class="headerlink" href="#execution-tools" title="Permanent link"></a></h2> <p>Tools for executing Python code and getting system information.</p> <h3 id="execute_python">execute_python<a class="headerlink" href="#execute_python" title="Permanent link"></a></h3> <p>Execute arbitrary Python code in FreeCAD's context.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="n">execute_python</span><span class="p">(</span>
</span><span id="__span-0-2"><a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a> <span class="n">code</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
</span><span id="__span-0-3"><a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a> <span class="n">timeout_ms</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">30000</span>
</span><span id="__span-0-4"><a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <p><strong>Parameters:</strong></p> <ul> <li><code>code</code>: Python code to execute. Use <code>_result_ = value</code> to return data.</li> <li><code>timeout_ms</code>: Maximum execution time in milliseconds.</li> </ul> <p><strong>Returns:</strong> Execution result with stdout, stderr, and any assigned <code>_result_</code>.</p> <p><strong>Example:</strong></p> <div class="language-python highlight"><pre><span></span><code><span id="__span-1-1"><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a><span class="k">await</span> <span class="n">execute_python</span><span class="p">(</span><span class="s1">'''</span>
</span><span id="__span-1-2"><a id="__codelineno-1-2" name="__codelineno-1-2" href="#__codelineno-1-2"></a><span class="s1">import Part</span>
</span><span id="__span-1-3"><a id="__codelineno-1-3" name="__codelineno-1-3" href="#__codelineno-1-3"></a><span class="s1">box = Part.makeBox(10, 20, 30)</span>
</span><span id="__span-1-4"><a id="__codelineno-1-4" name="__codelineno-1-4" href="#__codelineno-1-4"></a><span class="s1">_result_ = {"volume": box.Volume}</span>
</span><span id="__span-1-5"><a id="__codelineno-1-5" name="__codelineno-1-5" href="#__codelineno-1-5"></a><span class="s1">'''</span><span class="p">)</span>
</span></code></pre></div> <h3 id="get_freecad_version">get_freecad_version<a class="headerlink" href="#get_freecad_version" title="Permanent link"></a></h3> <p>Get FreeCAD version and build information.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-2-1"><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a><span class="n">get_freecad_version</span><span class="p">()</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <p><strong>Returns:</strong> Version string, build date, Python version, GUI availability.</p> <h3 id="get_connection_status">get_connection_status<a class="headerlink" href="#get_connection_status" title="Permanent link"></a></h3> <p>Get the current bridge connection status.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-3-1"><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a><span class="n">get_connection_status</span><span class="p">()</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <p><strong>Returns:</strong> Connection state, mode (xmlrpc/socket/embedded), latency.</p> <h3 id="get_console_output">get_console_output<a class="headerlink" href="#get_console_output" title="Permanent link"></a></h3> <p>Get recent FreeCAD console output.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-4-1"><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a><span class="n">get_console_output</span><span class="p">(</span><span class="n">lines</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">100</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">list</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span>
</span></code></pre></div> <h3 id="get_mcp_server_environment">get_mcp_server_environment<a class="headerlink" href="#get_mcp_server_environment" title="Permanent link"></a></h3> <p>Get environment information about the Robust MCP Server process. Useful for identifying the Robust MCP Server instance via the unique <code>instance_id</code>.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-5-1"><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a><span class="n">get_mcp_server_environment</span><span class="p">()</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <p><strong>Returns:</strong> Dictionary containing:</p> <ul> <li><code>instance_id</code>: Unique UUID for this server instance (generated at startup)</li> <li><code>hostname</code>: Server hostname</li> <li><code>os_name</code>: Operating system name (e.g., "Linux", "Darwin", "Windows")</li> <li><code>os_version</code>: OS version/release</li> <li><code>platform</code>: Full platform string</li> <li><code>python_version</code>: Python version</li> <li><code>freecad</code>: FreeCAD connection information (connected, mode, version, gui_available, is_headless)</li> <li><code>env_vars</code>: Selected environment variables (FREECAD_MODE, ports, host)</li> </ul> <hr> <h2 id="document-tools">Document Tools<a class="headerlink" href="#document-tools" title="Permanent link"></a></h2> <p>Tools for managing FreeCAD documents.</p> <h3 id="list_documents">list_documents<a class="headerlink" href="#list_documents" title="Permanent link"></a></h3> <p>List all open documents.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-6-1"><a id="__codelineno-6-1" name="__codelineno-6-1" href="#__codelineno-6-1"></a><span class="n">list_documents</span><span class="p">()</span> <span class="o">-&gt;</span> <span class="nb">list</span><span class="p">[</span><span class="nb">dict</span><span class="p">]</span>
</span></code></pre></div> <h3 id="get_active_document">get_active_document<a class="headerlink" href="#get_active_document" title="Permanent link"></a></h3> <p>Get the currently active document.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-7-1"><a id="__codelineno-7-1" name="__codelineno-7-1" href="#__codelineno-7-1"></a><span class="n">get_active_document</span><span class="p">()</span> <span class="o">-&gt;</span> <span class="nb">dict</span> <span class="o">|</span> <span class="kc">None</span>
</span></code></pre></div> <h3 id="create_document">create_document<a class="headerlink" href="#create_document" title="Permanent link"></a></h3> <p>Create a new document.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-8-1"><a id="__codelineno-8-1" name="__codelineno-8-1" href="#__codelineno-8-1"></a><span class="n">create_document</span><span class="p">(</span>
</span><span id="__span-8-2"><a id="__codelineno-8-2" name="__codelineno-8-2" href="#__codelineno-8-2"></a> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"Unnamed"</span><span class="p">,</span>
</span><span id="__span-8-3"><a id="__codelineno-8-3" name="__codelineno-8-3" href="#__codelineno-8-3"></a> <span class="n">label</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-8-4"><a id="__codelineno-8-4" name="__codelineno-8-4" href="#__codelineno-8-4"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h3 id="open_document">open_document<a class="headerlink" href="#open_document" title="Permanent link"></a></h3> <p>Open an existing FreeCAD file.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-9-1"><a id="__codelineno-9-1" name="__codelineno-9-1" href="#__codelineno-9-1"></a><span class="n">open_document</span><span class="p">(</span><span class="n">path</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h3 id="save_document">save_document<a class="headerlink" href="#save_document" title="Permanent link"></a></h3> <p>Save a document.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-10-1"><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a><span class="n">save_document</span><span class="p">(</span>
</span><span id="__span-10-2"><a id="__codelineno-10-2" name="__codelineno-10-2" href="#__codelineno-10-2"></a> <span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span><span id="__span-10-3"><a id="__codelineno-10-3" name="__codelineno-10-3" href="#__codelineno-10-3"></a> <span class="n">path</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-10-4"><a id="__codelineno-10-4" name="__codelineno-10-4" href="#__codelineno-10-4"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h3 id="close_document">close_document<a class="headerlink" href="#close_document" title="Permanent link"></a></h3> <p>Close a document.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-11-1"><a id="__codelineno-11-1" name="__codelineno-11-1" href="#__codelineno-11-1"></a><span class="n">close_document</span><span class="p">(</span>
</span><span id="__span-11-2"><a id="__codelineno-11-2" name="__codelineno-11-2" href="#__codelineno-11-2"></a> <span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span><span id="__span-11-3"><a id="__codelineno-11-3" name="__codelineno-11-3" href="#__codelineno-11-3"></a> <span class="n">save_changes</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="__span-11-4"><a id="__codelineno-11-4" name="__codelineno-11-4" href="#__codelineno-11-4"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h3 id="recompute_document">recompute_document<a class="headerlink" href="#recompute_document" title="Permanent link"></a></h3> <p>Recompute all objects in a document.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-12-1"><a id="__codelineno-12-1" name="__codelineno-12-1" href="#__codelineno-12-1"></a><span class="n">recompute_document</span><span class="p">(</span><span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <hr> <h2 id="object-tools">Object Tools<a class="headerlink" href="#object-tools" title="Permanent link"></a></h2> <p>Tools for creating and manipulating FreeCAD objects.</p> <h3 id="primitive-creation">Primitive Creation<a class="headerlink" href="#primitive-creation" title="Permanent link"></a></h3> <h4 id="create_box">create_box<a class="headerlink" href="#create_box" title="Permanent link"></a></h4> <p>Create a parametric box.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-13-1"><a id="__codelineno-13-1" name="__codelineno-13-1" href="#__codelineno-13-1"></a><span class="n">create_box</span><span class="p">(</span>
</span><span id="__span-13-2"><a id="__codelineno-13-2" name="__codelineno-13-2" href="#__codelineno-13-2"></a> <span class="n">length</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">10.0</span><span class="p">,</span>
</span><span id="__span-13-3"><a id="__codelineno-13-3" name="__codelineno-13-3" href="#__codelineno-13-3"></a> <span class="n">width</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">10.0</span><span class="p">,</span>
</span><span id="__span-13-4"><a id="__codelineno-13-4" name="__codelineno-13-4" href="#__codelineno-13-4"></a> <span class="n">height</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">10.0</span><span class="p">,</span>
</span><span id="__span-13-5"><a id="__codelineno-13-5" name="__codelineno-13-5" href="#__codelineno-13-5"></a> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span><span id="__span-13-6"><a id="__codelineno-13-6" name="__codelineno-13-6" href="#__codelineno-13-6"></a> <span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-13-7"><a id="__codelineno-13-7" name="__codelineno-13-7" href="#__codelineno-13-7"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h4 id="create_cylinder">create_cylinder<a class="headerlink" href="#create_cylinder" title="Permanent link"></a></h4> <p>Create a parametric cylinder.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-14-1"><a id="__codelineno-14-1" name="__codelineno-14-1" href="#__codelineno-14-1"></a><span class="n">create_cylinder</span><span class="p">(</span>
</span><span id="__span-14-2"><a id="__codelineno-14-2" name="__codelineno-14-2" href="#__codelineno-14-2"></a> <span class="n">radius</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">5.0</span><span class="p">,</span>
</span><span id="__span-14-3"><a id="__codelineno-14-3" name="__codelineno-14-3" href="#__codelineno-14-3"></a> <span class="n">height</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">10.0</span><span class="p">,</span>
</span><span id="__span-14-4"><a id="__codelineno-14-4" name="__codelineno-14-4" href="#__codelineno-14-4"></a> <span class="n">angle</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">360.0</span><span class="p">,</span> <span class="c1"># For partial cylinders</span>
</span><span id="__span-14-5"><a id="__codelineno-14-5" name="__codelineno-14-5" href="#__codelineno-14-5"></a> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span><span id="__span-14-6"><a id="__codelineno-14-6" name="__codelineno-14-6" href="#__codelineno-14-6"></a> <span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-14-7"><a id="__codelineno-14-7" name="__codelineno-14-7" href="#__codelineno-14-7"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h4 id="create_sphere">create_sphere<a class="headerlink" href="#create_sphere" title="Permanent link"></a></h4> <p>Create a parametric sphere.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-15-1"><a id="__codelineno-15-1" name="__codelineno-15-1" href="#__codelineno-15-1"></a><span class="n">create_sphere</span><span class="p">(</span>
</span><span id="__span-15-2"><a id="__codelineno-15-2" name="__codelineno-15-2" href="#__codelineno-15-2"></a> <span class="n">radius</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">5.0</span><span class="p">,</span>
</span><span id="__span-15-3"><a id="__codelineno-15-3" name="__codelineno-15-3" href="#__codelineno-15-3"></a> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span><span id="__span-15-4"><a id="__codelineno-15-4" name="__codelineno-15-4" href="#__codelineno-15-4"></a> <span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-15-5"><a id="__codelineno-15-5" name="__codelineno-15-5" href="#__codelineno-15-5"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h4 id="create_cone">create_cone<a class="headerlink" href="#create_cone" title="Permanent link"></a></h4> <p>Create a parametric cone.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-16-1"><a id="__codelineno-16-1" name="__codelineno-16-1" href="#__codelineno-16-1"></a><span class="n">create_cone</span><span class="p">(</span>
</span><span id="__span-16-2"><a id="__codelineno-16-2" name="__codelineno-16-2" href="#__codelineno-16-2"></a> <span class="n">radius1</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">5.0</span><span class="p">,</span> <span class="c1"># Bottom radius</span>
</span><span id="__span-16-3"><a id="__codelineno-16-3" name="__codelineno-16-3" href="#__codelineno-16-3"></a> <span class="n">radius2</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">0.0</span><span class="p">,</span> <span class="c1"># Top radius (0 = pointed)</span>
</span><span id="__span-16-4"><a id="__codelineno-16-4" name="__codelineno-16-4" href="#__codelineno-16-4"></a> <span class="n">height</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">10.0</span><span class="p">,</span>
</span><span id="__span-16-5"><a id="__codelineno-16-5" name="__codelineno-16-5" href="#__codelineno-16-5"></a> <span class="n">angle</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">360.0</span><span class="p">,</span>
</span><span id="__span-16-6"><a id="__codelineno-16-6" name="__codelineno-16-6" href="#__codelineno-16-6"></a> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span><span id="__span-16-7"><a id="__codelineno-16-7" name="__codelineno-16-7" href="#__codelineno-16-7"></a> <span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-16-8"><a id="__codelineno-16-8" name="__codelineno-16-8" href="#__codelineno-16-8"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h4 id="create_torus">create_torus<a class="headerlink" href="#create_torus" title="Permanent link"></a></h4> <p>Create a torus (donut shape).</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-17-1"><a id="__codelineno-17-1" name="__codelineno-17-1" href="#__codelineno-17-1"></a><span class="n">create_torus</span><span class="p">(</span>
</span><span id="__span-17-2"><a id="__codelineno-17-2" name="__codelineno-17-2" href="#__codelineno-17-2"></a> <span class="n">radius1</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">10.0</span><span class="p">,</span> <span class="c1"># Major radius</span>
</span><span id="__span-17-3"><a id="__codelineno-17-3" name="__codelineno-17-3" href="#__codelineno-17-3"></a> <span class="n">radius2</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">2.0</span><span class="p">,</span> <span class="c1"># Minor radius</span>
</span><span id="__span-17-4"><a id="__codelineno-17-4" name="__codelineno-17-4" href="#__codelineno-17-4"></a> <span class="n">angle1</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="o">-</span><span class="mf">180.0</span><span class="p">,</span>
</span><span id="__span-17-5"><a id="__codelineno-17-5" name="__codelineno-17-5" href="#__codelineno-17-5"></a> <span class="n">angle2</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">180.0</span><span class="p">,</span>
</span><span id="__span-17-6"><a id="__codelineno-17-6" name="__codelineno-17-6" href="#__codelineno-17-6"></a> <span class="n">angle3</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">360.0</span><span class="p">,</span>
</span><span id="__span-17-7"><a id="__codelineno-17-7" name="__codelineno-17-7" href="#__codelineno-17-7"></a> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span><span id="__span-17-8"><a id="__codelineno-17-8" name="__codelineno-17-8" href="#__codelineno-17-8"></a> <span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-17-9"><a id="__codelineno-17-9" name="__codelineno-17-9" href="#__codelineno-17-9"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h4 id="create_wedge">create_wedge<a class="headerlink" href="#create_wedge" title="Permanent link"></a></h4> <p>Create a tapered wedge shape.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-18-1"><a id="__codelineno-18-1" name="__codelineno-18-1" href="#__codelineno-18-1"></a><span class="n">create_wedge</span><span class="p">(</span>
</span><span id="__span-18-2"><a id="__codelineno-18-2" name="__codelineno-18-2" href="#__codelineno-18-2"></a> <span class="n">xmin</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">0.0</span><span class="p">,</span> <span class="n">ymin</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">0.0</span><span class="p">,</span> <span class="n">zmin</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">0.0</span><span class="p">,</span>
</span><span id="__span-18-3"><a id="__codelineno-18-3" name="__codelineno-18-3" href="#__codelineno-18-3"></a> <span class="n">x2min</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">2.0</span><span class="p">,</span> <span class="n">z2min</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">2.0</span><span class="p">,</span>
</span><span id="__span-18-4"><a id="__codelineno-18-4" name="__codelineno-18-4" href="#__codelineno-18-4"></a> <span class="n">xmax</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">10.0</span><span class="p">,</span> <span class="n">ymax</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">10.0</span><span class="p">,</span> <span class="n">zmax</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">10.0</span><span class="p">,</span>
</span><span id="__span-18-5"><a id="__codelineno-18-5" name="__codelineno-18-5" href="#__codelineno-18-5"></a> <span class="n">x2max</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">8.0</span><span class="p">,</span> <span class="n">z2max</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">8.0</span><span class="p">,</span>
</span><span id="__span-18-6"><a id="__codelineno-18-6" name="__codelineno-18-6" href="#__codelineno-18-6"></a> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span><span id="__span-18-7"><a id="__codelineno-18-7" name="__codelineno-18-7" href="#__codelineno-18-7"></a> <span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-18-8"><a id="__codelineno-18-8" name="__codelineno-18-8" href="#__codelineno-18-8"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h4 id="create_helix">create_helix<a class="headerlink" href="#create_helix" title="Permanent link"></a></h4> <p>Create a helix curve (for threads, springs).</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-19-1"><a id="__codelineno-19-1" name="__codelineno-19-1" href="#__codelineno-19-1"></a><span class="n">create_helix</span><span class="p">(</span>
</span><span id="__span-19-2"><a id="__codelineno-19-2" name="__codelineno-19-2" href="#__codelineno-19-2"></a> <span class="n">pitch</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">5.0</span><span class="p">,</span>
</span><span id="__span-19-3"><a id="__codelineno-19-3" name="__codelineno-19-3" href="#__codelineno-19-3"></a> <span class="n">height</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">20.0</span><span class="p">,</span>
</span><span id="__span-19-4"><a id="__codelineno-19-4" name="__codelineno-19-4" href="#__codelineno-19-4"></a> <span class="n">radius</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">5.0</span><span class="p">,</span>
</span><span id="__span-19-5"><a id="__codelineno-19-5" name="__codelineno-19-5" href="#__codelineno-19-5"></a> <span class="n">angle</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">0.0</span><span class="p">,</span>
</span><span id="__span-19-6"><a id="__codelineno-19-6" name="__codelineno-19-6" href="#__codelineno-19-6"></a> <span class="n">left_handed</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
</span><span id="__span-19-7"><a id="__codelineno-19-7" name="__codelineno-19-7" href="#__codelineno-19-7"></a> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span><span id="__span-19-8"><a id="__codelineno-19-8" name="__codelineno-19-8" href="#__codelineno-19-8"></a> <span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-19-9"><a id="__codelineno-19-9" name="__codelineno-19-9" href="#__codelineno-19-9"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h3 id="object-management">Object Management<a class="headerlink" href="#object-management" title="Permanent link"></a></h3> <h4 id="list_objects">list_objects<a class="headerlink" href="#list_objects" title="Permanent link"></a></h4> <p>List all objects in a document.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-20-1"><a id="__codelineno-20-1" name="__codelineno-20-1" href="#__codelineno-20-1"></a><span class="n">list_objects</span><span class="p">(</span><span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">list</span><span class="p">[</span><span class="nb">dict</span><span class="p">]</span>
</span></code></pre></div> <h4 id="inspect_object">inspect_object<a class="headerlink" href="#inspect_object" title="Permanent link"></a></h4> <p>Get detailed information about an object.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-21-1"><a id="__codelineno-21-1" name="__codelineno-21-1" href="#__codelineno-21-1"></a><span class="n">inspect_object</span><span class="p">(</span>
</span><span id="__span-21-2"><a id="__codelineno-21-2" name="__codelineno-21-2" href="#__codelineno-21-2"></a> <span class="n">object_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
</span><span id="__span-21-3"><a id="__codelineno-21-3" name="__codelineno-21-3" href="#__codelineno-21-3"></a> <span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span><span id="__span-21-4"><a id="__codelineno-21-4" name="__codelineno-21-4" href="#__codelineno-21-4"></a> <span class="n">include_properties</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span>
</span><span id="__span-21-5"><a id="__codelineno-21-5" name="__codelineno-21-5" href="#__codelineno-21-5"></a> <span class="n">include_shape</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="__span-21-6"><a id="__codelineno-21-6" name="__codelineno-21-6" href="#__codelineno-21-6"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h4 id="create_object">create_object<a class="headerlink" href="#create_object" title="Permanent link"></a></h4> <p>Create a generic FreeCAD object by type ID.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-22-1"><a id="__codelineno-22-1" name="__codelineno-22-1" href="#__codelineno-22-1"></a><span class="n">create_object</span><span class="p">(</span>
</span><span id="__span-22-2"><a id="__codelineno-22-2" name="__codelineno-22-2" href="#__codelineno-22-2"></a> <span class="n">type_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="c1"># e.g., "Part::Box", "Sketcher::SketchObject"</span>
</span><span id="__span-22-3"><a id="__codelineno-22-3" name="__codelineno-22-3" href="#__codelineno-22-3"></a> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span><span id="__span-22-4"><a id="__codelineno-22-4" name="__codelineno-22-4" href="#__codelineno-22-4"></a> <span class="n">properties</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span><span id="__span-22-5"><a id="__codelineno-22-5" name="__codelineno-22-5" href="#__codelineno-22-5"></a> <span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-22-6"><a id="__codelineno-22-6" name="__codelineno-22-6" href="#__codelineno-22-6"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h4 id="edit_object">edit_object<a class="headerlink" href="#edit_object" title="Permanent link"></a></h4> <p>Modify object properties.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-23-1"><a id="__codelineno-23-1" name="__codelineno-23-1" href="#__codelineno-23-1"></a><span class="n">edit_object</span><span class="p">(</span>
</span><span id="__span-23-2"><a id="__codelineno-23-2" name="__codelineno-23-2" href="#__codelineno-23-2"></a> <span class="n">object_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
</span><span id="__span-23-3"><a id="__codelineno-23-3" name="__codelineno-23-3" href="#__codelineno-23-3"></a> <span class="n">properties</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">],</span>
</span><span id="__span-23-4"><a id="__codelineno-23-4" name="__codelineno-23-4" href="#__codelineno-23-4"></a> <span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-23-5"><a id="__codelineno-23-5" name="__codelineno-23-5" href="#__codelineno-23-5"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h4 id="delete_object">delete_object<a class="headerlink" href="#delete_object" title="Permanent link"></a></h4> <p>Delete an object.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-24-1"><a id="__codelineno-24-1" name="__codelineno-24-1" href="#__codelineno-24-1"></a><span class="n">delete_object</span><span class="p">(</span>
</span><span id="__span-24-2"><a id="__codelineno-24-2" name="__codelineno-24-2" href="#__codelineno-24-2"></a> <span class="n">object_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
</span><span id="__span-24-3"><a id="__codelineno-24-3" name="__codelineno-24-3" href="#__codelineno-24-3"></a> <span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-24-4"><a id="__codelineno-24-4" name="__codelineno-24-4" href="#__codelineno-24-4"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h3 id="boolean-operations">Boolean Operations<a class="headerlink" href="#boolean-operations" title="Permanent link"></a></h3> <h4 id="boolean_operation">boolean_operation<a class="headerlink" href="#boolean_operation" title="Permanent link"></a></h4> <p>Perform boolean operations (union, subtract, intersect).</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-25-1"><a id="__codelineno-25-1" name="__codelineno-25-1" href="#__codelineno-25-1"></a><span class="n">boolean_operation</span><span class="p">(</span>
</span><span id="__span-25-2"><a id="__codelineno-25-2" name="__codelineno-25-2" href="#__codelineno-25-2"></a> <span class="n">operation</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="c1"># "fuse", "cut", or "common"</span>
</span><span id="__span-25-3"><a id="__codelineno-25-3" name="__codelineno-25-3" href="#__codelineno-25-3"></a> <span class="n">object1_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
</span><span id="__span-25-4"><a id="__codelineno-25-4" name="__codelineno-25-4" href="#__codelineno-25-4"></a> <span class="n">object2_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
</span><span id="__span-25-5"><a id="__codelineno-25-5" name="__codelineno-25-5" href="#__codelineno-25-5"></a> <span class="n">result_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span><span id="__span-25-6"><a id="__codelineno-25-6" name="__codelineno-25-6" href="#__codelineno-25-6"></a> <span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-25-7"><a id="__codelineno-25-7" name="__codelineno-25-7" href="#__codelineno-25-7"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <p><strong>Operations:</strong></p> <ul> <li><code>fuse</code> - Union/combine shapes</li> <li><code>cut</code> - Subtract object2 from object1</li> <li><code>common</code> - Intersection of shapes</li> </ul> <h3 id="transformations">Transformations<a class="headerlink" href="#transformations" title="Permanent link"></a></h3> <h4 id="set_placement">set_placement<a class="headerlink" href="#set_placement" title="Permanent link"></a></h4> <p>Set object position and rotation.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-26-1"><a id="__codelineno-26-1" name="__codelineno-26-1" href="#__codelineno-26-1"></a><span class="n">set_placement</span><span class="p">(</span>
</span><span id="__span-26-2"><a id="__codelineno-26-2" name="__codelineno-26-2" href="#__codelineno-26-2"></a> <span class="n">object_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
</span><span id="__span-26-3"><a id="__codelineno-26-3" name="__codelineno-26-3" href="#__codelineno-26-3"></a> <span class="n">position</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="nb">float</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="c1"># [x, y, z]</span>
</span><span id="__span-26-4"><a id="__codelineno-26-4" name="__codelineno-26-4" href="#__codelineno-26-4"></a> <span class="n">rotation</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="nb">float</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="c1"># [yaw, pitch, roll] in degrees</span>
</span><span id="__span-26-5"><a id="__codelineno-26-5" name="__codelineno-26-5" href="#__codelineno-26-5"></a> <span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-26-6"><a id="__codelineno-26-6" name="__codelineno-26-6" href="#__codelineno-26-6"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h4 id="rotate_object">rotate_object<a class="headerlink" href="#rotate_object" title="Permanent link"></a></h4> <p>Rotate object around an axis.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-27-1"><a id="__codelineno-27-1" name="__codelineno-27-1" href="#__codelineno-27-1"></a><span class="n">rotate_object</span><span class="p">(</span>
</span><span id="__span-27-2"><a id="__codelineno-27-2" name="__codelineno-27-2" href="#__codelineno-27-2"></a> <span class="n">object_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
</span><span id="__span-27-3"><a id="__codelineno-27-3" name="__codelineno-27-3" href="#__codelineno-27-3"></a> <span class="n">axis</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="nb">float</span><span class="p">],</span> <span class="c1"># [x, y, z] rotation axis</span>
</span><span id="__span-27-4"><a id="__codelineno-27-4" name="__codelineno-27-4" href="#__codelineno-27-4"></a> <span class="n">angle</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span> <span class="c1"># Degrees</span>
</span><span id="__span-27-5"><a id="__codelineno-27-5" name="__codelineno-27-5" href="#__codelineno-27-5"></a> <span class="n">center</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="nb">float</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span><span id="__span-27-6"><a id="__codelineno-27-6" name="__codelineno-27-6" href="#__codelineno-27-6"></a> <span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-27-7"><a id="__codelineno-27-7" name="__codelineno-27-7" href="#__codelineno-27-7"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h4 id="scale_object">scale_object<a class="headerlink" href="#scale_object" title="Permanent link"></a></h4> <p>Scale an object (creates new copy).</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-28-1"><a id="__codelineno-28-1" name="__codelineno-28-1" href="#__codelineno-28-1"></a><span class="n">scale_object</span><span class="p">(</span>
</span><span id="__span-28-2"><a id="__codelineno-28-2" name="__codelineno-28-2" href="#__codelineno-28-2"></a> <span class="n">object_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
</span><span id="__span-28-3"><a id="__codelineno-28-3" name="__codelineno-28-3" href="#__codelineno-28-3"></a> <span class="n">scale</span><span class="p">:</span> <span class="nb">float</span> <span class="o">|</span> <span class="nb">list</span><span class="p">[</span><span class="nb">float</span><span class="p">],</span> <span class="c1"># Uniform or [sx, sy, sz]</span>
</span><span id="__span-28-4"><a id="__codelineno-28-4" name="__codelineno-28-4" href="#__codelineno-28-4"></a> <span class="n">result_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span><span id="__span-28-5"><a id="__codelineno-28-5" name="__codelineno-28-5" href="#__codelineno-28-5"></a> <span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-28-6"><a id="__codelineno-28-6" name="__codelineno-28-6" href="#__codelineno-28-6"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h4 id="copy_object">copy_object<a class="headerlink" href="#copy_object" title="Permanent link"></a></h4> <p>Create a copy of an object.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-29-1"><a id="__codelineno-29-1" name="__codelineno-29-1" href="#__codelineno-29-1"></a><span class="n">copy_object</span><span class="p">(</span>
</span><span id="__span-29-2"><a id="__codelineno-29-2" name="__codelineno-29-2" href="#__codelineno-29-2"></a> <span class="n">object_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
</span><span id="__span-29-3"><a id="__codelineno-29-3" name="__codelineno-29-3" href="#__codelineno-29-3"></a> <span class="n">new_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span><span id="__span-29-4"><a id="__codelineno-29-4" name="__codelineno-29-4" href="#__codelineno-29-4"></a> <span class="n">offset</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="nb">float</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="c1"># [x, y, z]</span>
</span><span id="__span-29-5"><a id="__codelineno-29-5" name="__codelineno-29-5" href="#__codelineno-29-5"></a> <span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-29-6"><a id="__codelineno-29-6" name="__codelineno-29-6" href="#__codelineno-29-6"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h4 id="mirror_object">mirror_object<a class="headerlink" href="#mirror_object" title="Permanent link"></a></h4> <p>Mirror object across a plane.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-30-1"><a id="__codelineno-30-1" name="__codelineno-30-1" href="#__codelineno-30-1"></a><span class="n">mirror_object</span><span class="p">(</span>
</span><span id="__span-30-2"><a id="__codelineno-30-2" name="__codelineno-30-2" href="#__codelineno-30-2"></a> <span class="n">object_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
</span><span id="__span-30-3"><a id="__codelineno-30-3" name="__codelineno-30-3" href="#__codelineno-30-3"></a> <span class="n">plane</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"XY"</span><span class="p">,</span> <span class="c1"># "XY", "XZ", or "YZ"</span>
</span><span id="__span-30-4"><a id="__codelineno-30-4" name="__codelineno-30-4" href="#__codelineno-30-4"></a> <span class="n">result_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span><span id="__span-30-5"><a id="__codelineno-30-5" name="__codelineno-30-5" href="#__codelineno-30-5"></a> <span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-30-6"><a id="__codelineno-30-6" name="__codelineno-30-6" href="#__codelineno-30-6"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h3 id="selection-gui-mode">Selection (GUI Mode)<a class="headerlink" href="#selection-gui-mode" title="Permanent link"></a></h3> <h4 id="get_selection">get_selection<a class="headerlink" href="#get_selection" title="Permanent link"></a></h4> <p>Get currently selected objects.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-31-1"><a id="__codelineno-31-1" name="__codelineno-31-1" href="#__codelineno-31-1"></a><span class="n">get_selection</span><span class="p">(</span><span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">list</span><span class="p">[</span><span class="nb">dict</span><span class="p">]</span>
</span></code></pre></div> <h4 id="set_selection">set_selection<a class="headerlink" href="#set_selection" title="Permanent link"></a></h4> <p>Select objects programmatically.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-32-1"><a id="__codelineno-32-1" name="__codelineno-32-1" href="#__codelineno-32-1"></a><span class="n">set_selection</span><span class="p">(</span>
</span><span id="__span-32-2"><a id="__codelineno-32-2" name="__codelineno-32-2" href="#__codelineno-32-2"></a> <span class="n">object_names</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span>
</span><span id="__span-32-3"><a id="__codelineno-32-3" name="__codelineno-32-3" href="#__codelineno-32-3"></a> <span class="n">clear_existing</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span>
</span><span id="__span-32-4"><a id="__codelineno-32-4" name="__codelineno-32-4" href="#__codelineno-32-4"></a> <span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-32-5"><a id="__codelineno-32-5" name="__codelineno-32-5" href="#__codelineno-32-5"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h4 id="clear_selection">clear_selection<a class="headerlink" href="#clear_selection" title="Permanent link"></a></h4> <p>Clear the current selection.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-33-1"><a id="__codelineno-33-1" name="__codelineno-33-1" href="#__codelineno-33-1"></a><span class="n">clear_selection</span><span class="p">()</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <hr> <h2 id="partdesign-tools">PartDesign Tools<a class="headerlink" href="#partdesign-tools" title="Permanent link"></a></h2> <p>Tools for parametric solid modeling using the PartDesign workbench.</p> <h3 id="bodies-and-sketches">Bodies and Sketches<a class="headerlink" href="#bodies-and-sketches" title="Permanent link"></a></h3> <h4 id="create_partdesign_body">create_partdesign_body<a class="headerlink" href="#create_partdesign_body" title="Permanent link"></a></h4> <p>Create a PartDesign Body container.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-34-1"><a id="__codelineno-34-1" name="__codelineno-34-1" href="#__codelineno-34-1"></a><span class="n">create_partdesign_body</span><span class="p">(</span>
</span><span id="__span-34-2"><a id="__codelineno-34-2" name="__codelineno-34-2" href="#__codelineno-34-2"></a> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span><span id="__span-34-3"><a id="__codelineno-34-3" name="__codelineno-34-3" href="#__codelineno-34-3"></a> <span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-34-4"><a id="__codelineno-34-4" name="__codelineno-34-4" href="#__codelineno-34-4"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h4 id="create_sketch">create_sketch<a class="headerlink" href="#create_sketch" title="Permanent link"></a></h4> <p>Create a sketch attached to a plane or body.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-35-1"><a id="__codelineno-35-1" name="__codelineno-35-1" href="#__codelineno-35-1"></a><span class="n">create_sketch</span><span class="p">(</span>
</span><span id="__span-35-2"><a id="__codelineno-35-2" name="__codelineno-35-2" href="#__codelineno-35-2"></a> <span class="n">body_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span><span id="__span-35-3"><a id="__codelineno-35-3" name="__codelineno-35-3" href="#__codelineno-35-3"></a> <span class="n">plane</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"XY_Plane"</span><span class="p">,</span> <span class="c1"># "XY_Plane", "XZ_Plane", "YZ_Plane", or "FaceN"</span>
</span><span id="__span-35-4"><a id="__codelineno-35-4" name="__codelineno-35-4" href="#__codelineno-35-4"></a> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span><span id="__span-35-5"><a id="__codelineno-35-5" name="__codelineno-35-5" href="#__codelineno-35-5"></a> <span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-35-6"><a id="__codelineno-35-6" name="__codelineno-35-6" href="#__codelineno-35-6"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h3 id="sketch-geometry">Sketch Geometry<a class="headerlink" href="#sketch-geometry" title="Permanent link"></a></h3> <h4 id="add_sketch_rectangle">add_sketch_rectangle<a class="headerlink" href="#add_sketch_rectangle" title="Permanent link"></a></h4> <p>Add a rectangle to a sketch.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-36-1"><a id="__codelineno-36-1" name="__codelineno-36-1" href="#__codelineno-36-1"></a><span class="n">add_sketch_rectangle</span><span class="p">(</span>
</span><span id="__span-36-2"><a id="__codelineno-36-2" name="__codelineno-36-2" href="#__codelineno-36-2"></a> <span class="n">sketch_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
</span><span id="__span-36-3"><a id="__codelineno-36-3" name="__codelineno-36-3" href="#__codelineno-36-3"></a> <span class="n">x</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span> <span class="n">y</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span> <span class="c1"># Bottom-left corner</span>
</span><span id="__span-36-4"><a id="__codelineno-36-4" name="__codelineno-36-4" href="#__codelineno-36-4"></a> <span class="n">width</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span> <span class="n">height</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span>
</span><span id="__span-36-5"><a id="__codelineno-36-5" name="__codelineno-36-5" href="#__codelineno-36-5"></a> <span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-36-6"><a id="__codelineno-36-6" name="__codelineno-36-6" href="#__codelineno-36-6"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h4 id="add_sketch_circle">add_sketch_circle<a class="headerlink" href="#add_sketch_circle" title="Permanent link"></a></h4> <p>Add a circle to a sketch.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-37-1"><a id="__codelineno-37-1" name="__codelineno-37-1" href="#__codelineno-37-1"></a><span class="n">add_sketch_circle</span><span class="p">(</span>
</span><span id="__span-37-2"><a id="__codelineno-37-2" name="__codelineno-37-2" href="#__codelineno-37-2"></a> <span class="n">sketch_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
</span><span id="__span-37-3"><a id="__codelineno-37-3" name="__codelineno-37-3" href="#__codelineno-37-3"></a> <span class="n">center_x</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span> <span class="n">center_y</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span>
</span><span id="__span-37-4"><a id="__codelineno-37-4" name="__codelineno-37-4" href="#__codelineno-37-4"></a> <span class="n">radius</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span>
</span><span id="__span-37-5"><a id="__codelineno-37-5" name="__codelineno-37-5" href="#__codelineno-37-5"></a> <span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-37-6"><a id="__codelineno-37-6" name="__codelineno-37-6" href="#__codelineno-37-6"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h4 id="add_sketch_line">add_sketch_line<a class="headerlink" href="#add_sketch_line" title="Permanent link"></a></h4> <p>Add a line to a sketch.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-38-1"><a id="__codelineno-38-1" name="__codelineno-38-1" href="#__codelineno-38-1"></a><span class="n">add_sketch_line</span><span class="p">(</span>
</span><span id="__span-38-2"><a id="__codelineno-38-2" name="__codelineno-38-2" href="#__codelineno-38-2"></a> <span class="n">sketch_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
</span><span id="__span-38-3"><a id="__codelineno-38-3" name="__codelineno-38-3" href="#__codelineno-38-3"></a> <span class="n">x1</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span> <span class="n">y1</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span> <span class="c1"># Start point</span>
</span><span id="__span-38-4"><a id="__codelineno-38-4" name="__codelineno-38-4" href="#__codelineno-38-4"></a> <span class="n">x2</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span> <span class="n">y2</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span> <span class="c1"># End point</span>
</span><span id="__span-38-5"><a id="__codelineno-38-5" name="__codelineno-38-5" href="#__codelineno-38-5"></a> <span class="n">construction</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
</span><span id="__span-38-6"><a id="__codelineno-38-6" name="__codelineno-38-6" href="#__codelineno-38-6"></a> <span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-38-7"><a id="__codelineno-38-7" name="__codelineno-38-7" href="#__codelineno-38-7"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h4 id="add_sketch_arc">add_sketch_arc<a class="headerlink" href="#add_sketch_arc" title="Permanent link"></a></h4> <p>Add an arc to a sketch.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-39-1"><a id="__codelineno-39-1" name="__codelineno-39-1" href="#__codelineno-39-1"></a><span class="n">add_sketch_arc</span><span class="p">(</span>
</span><span id="__span-39-2"><a id="__codelineno-39-2" name="__codelineno-39-2" href="#__codelineno-39-2"></a> <span class="n">sketch_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
</span><span id="__span-39-3"><a id="__codelineno-39-3" name="__codelineno-39-3" href="#__codelineno-39-3"></a> <span class="n">center_x</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span> <span class="n">center_y</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span>
</span><span id="__span-39-4"><a id="__codelineno-39-4" name="__codelineno-39-4" href="#__codelineno-39-4"></a> <span class="n">radius</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span>
</span><span id="__span-39-5"><a id="__codelineno-39-5" name="__codelineno-39-5" href="#__codelineno-39-5"></a> <span class="n">start_angle</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span> <span class="c1"># Degrees</span>
</span><span id="__span-39-6"><a id="__codelineno-39-6" name="__codelineno-39-6" href="#__codelineno-39-6"></a> <span class="n">end_angle</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span> <span class="c1"># Degrees</span>
</span><span id="__span-39-7"><a id="__codelineno-39-7" name="__codelineno-39-7" href="#__codelineno-39-7"></a> <span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-39-8"><a id="__codelineno-39-8" name="__codelineno-39-8" href="#__codelineno-39-8"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h4 id="add_sketch_point">add_sketch_point<a class="headerlink" href="#add_sketch_point" title="Permanent link"></a></h4> <p>Add a point to a sketch (useful for hole centers).</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-40-1"><a id="__codelineno-40-1" name="__codelineno-40-1" href="#__codelineno-40-1"></a><span class="n">add_sketch_point</span><span class="p">(</span>
</span><span id="__span-40-2"><a id="__codelineno-40-2" name="__codelineno-40-2" href="#__codelineno-40-2"></a> <span class="n">sketch_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
</span><span id="__span-40-3"><a id="__codelineno-40-3" name="__codelineno-40-3" href="#__codelineno-40-3"></a> <span class="n">x</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span> <span class="n">y</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span>
</span><span id="__span-40-4"><a id="__codelineno-40-4" name="__codelineno-40-4" href="#__codelineno-40-4"></a> <span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-40-5"><a id="__codelineno-40-5" name="__codelineno-40-5" href="#__codelineno-40-5"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h3 id="additive-features">Additive Features<a class="headerlink" href="#additive-features" title="Permanent link"></a></h3> <h4 id="pad_sketch">pad_sketch<a class="headerlink" href="#pad_sketch" title="Permanent link"></a></h4> <p>Extrude a sketch to create material.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-41-1"><a id="__codelineno-41-1" name="__codelineno-41-1" href="#__codelineno-41-1"></a><span class="n">pad_sketch</span><span class="p">(</span>
</span><span id="__span-41-2"><a id="__codelineno-41-2" name="__codelineno-41-2" href="#__codelineno-41-2"></a> <span class="n">sketch_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
</span><span id="__span-41-3"><a id="__codelineno-41-3" name="__codelineno-41-3" href="#__codelineno-41-3"></a> <span class="n">length</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span>
</span><span id="__span-41-4"><a id="__codelineno-41-4" name="__codelineno-41-4" href="#__codelineno-41-4"></a> <span class="n">symmetric</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
</span><span id="__span-41-5"><a id="__codelineno-41-5" name="__codelineno-41-5" href="#__codelineno-41-5"></a> <span class="nb">reversed</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
</span><span id="__span-41-6"><a id="__codelineno-41-6" name="__codelineno-41-6" href="#__codelineno-41-6"></a> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span><span id="__span-41-7"><a id="__codelineno-41-7" name="__codelineno-41-7" href="#__codelineno-41-7"></a> <span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-41-8"><a id="__codelineno-41-8" name="__codelineno-41-8" href="#__codelineno-41-8"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h4 id="revolution_sketch">revolution_sketch<a class="headerlink" href="#revolution_sketch" title="Permanent link"></a></h4> <p>Revolve a sketch around an axis.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-42-1"><a id="__codelineno-42-1" name="__codelineno-42-1" href="#__codelineno-42-1"></a><span class="n">revolution_sketch</span><span class="p">(</span>
</span><span id="__span-42-2"><a id="__codelineno-42-2" name="__codelineno-42-2" href="#__codelineno-42-2"></a> <span class="n">sketch_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
</span><span id="__span-42-3"><a id="__codelineno-42-3" name="__codelineno-42-3" href="#__codelineno-42-3"></a> <span class="n">angle</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">360.0</span><span class="p">,</span>
</span><span id="__span-42-4"><a id="__codelineno-42-4" name="__codelineno-42-4" href="#__codelineno-42-4"></a> <span class="n">axis</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"Base_X"</span><span class="p">,</span> <span class="c1"># "Base_X/Y/Z" or "Sketch_V/H"</span>
</span><span id="__span-42-5"><a id="__codelineno-42-5" name="__codelineno-42-5" href="#__codelineno-42-5"></a> <span class="n">symmetric</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
</span><span id="__span-42-6"><a id="__codelineno-42-6" name="__codelineno-42-6" href="#__codelineno-42-6"></a> <span class="nb">reversed</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
</span><span id="__span-42-7"><a id="__codelineno-42-7" name="__codelineno-42-7" href="#__codelineno-42-7"></a> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span><span id="__span-42-8"><a id="__codelineno-42-8" name="__codelineno-42-8" href="#__codelineno-42-8"></a> <span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-42-9"><a id="__codelineno-42-9" name="__codelineno-42-9" href="#__codelineno-42-9"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h4 id="loft_sketches">loft_sketches<a class="headerlink" href="#loft_sketches" title="Permanent link"></a></h4> <p>Loft through multiple sketches.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-43-1"><a id="__codelineno-43-1" name="__codelineno-43-1" href="#__codelineno-43-1"></a><span class="n">loft_sketches</span><span class="p">(</span>
</span><span id="__span-43-2"><a id="__codelineno-43-2" name="__codelineno-43-2" href="#__codelineno-43-2"></a> <span class="n">sketch_names</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span>
</span><span id="__span-43-3"><a id="__codelineno-43-3" name="__codelineno-43-3" href="#__codelineno-43-3"></a> <span class="n">ruled</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
</span><span id="__span-43-4"><a id="__codelineno-43-4" name="__codelineno-43-4" href="#__codelineno-43-4"></a> <span class="n">closed</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
</span><span id="__span-43-5"><a id="__codelineno-43-5" name="__codelineno-43-5" href="#__codelineno-43-5"></a> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span><span id="__span-43-6"><a id="__codelineno-43-6" name="__codelineno-43-6" href="#__codelineno-43-6"></a> <span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-43-7"><a id="__codelineno-43-7" name="__codelineno-43-7" href="#__codelineno-43-7"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h4 id="sweep_sketch">sweep_sketch<a class="headerlink" href="#sweep_sketch" title="Permanent link"></a></h4> <p>Sweep a profile along a path.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-44-1"><a id="__codelineno-44-1" name="__codelineno-44-1" href="#__codelineno-44-1"></a><span class="n">sweep_sketch</span><span class="p">(</span>
</span><span id="__span-44-2"><a id="__codelineno-44-2" name="__codelineno-44-2" href="#__codelineno-44-2"></a> <span class="n">profile_sketch</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
</span><span id="__span-44-3"><a id="__codelineno-44-3" name="__codelineno-44-3" href="#__codelineno-44-3"></a> <span class="n">spine_sketch</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
</span><span id="__span-44-4"><a id="__codelineno-44-4" name="__codelineno-44-4" href="#__codelineno-44-4"></a> <span class="n">transition</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"Transformed"</span><span class="p">,</span> <span class="c1"># "Transformed", "Right", "Round"</span>
</span><span id="__span-44-5"><a id="__codelineno-44-5" name="__codelineno-44-5" href="#__codelineno-44-5"></a> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span><span id="__span-44-6"><a id="__codelineno-44-6" name="__codelineno-44-6" href="#__codelineno-44-6"></a> <span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-44-7"><a id="__codelineno-44-7" name="__codelineno-44-7" href="#__codelineno-44-7"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h3 id="subtractive-features">Subtractive Features<a class="headerlink" href="#subtractive-features" title="Permanent link"></a></h3> <h4 id="pocket_sketch">pocket_sketch<a class="headerlink" href="#pocket_sketch" title="Permanent link"></a></h4> <p>Cut material by extruding a sketch.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-45-1"><a id="__codelineno-45-1" name="__codelineno-45-1" href="#__codelineno-45-1"></a><span class="n">pocket_sketch</span><span class="p">(</span>
</span><span id="__span-45-2"><a id="__codelineno-45-2" name="__codelineno-45-2" href="#__codelineno-45-2"></a> <span class="n">sketch_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
</span><span id="__span-45-3"><a id="__codelineno-45-3" name="__codelineno-45-3" href="#__codelineno-45-3"></a> <span class="n">length</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span>
</span><span id="__span-45-4"><a id="__codelineno-45-4" name="__codelineno-45-4" href="#__codelineno-45-4"></a> <span class="nb">type</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"Length"</span><span class="p">,</span> <span class="c1"># "Length", "ThroughAll", "UpToFirst", "UpToFace"</span>
</span><span id="__span-45-5"><a id="__codelineno-45-5" name="__codelineno-45-5" href="#__codelineno-45-5"></a> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span><span id="__span-45-6"><a id="__codelineno-45-6" name="__codelineno-45-6" href="#__codelineno-45-6"></a> <span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-45-7"><a id="__codelineno-45-7" name="__codelineno-45-7" href="#__codelineno-45-7"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h4 id="groove_sketch">groove_sketch<a class="headerlink" href="#groove_sketch" title="Permanent link"></a></h4> <p>Cut material by revolving a sketch.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-46-1"><a id="__codelineno-46-1" name="__codelineno-46-1" href="#__codelineno-46-1"></a><span class="n">groove_sketch</span><span class="p">(</span>
</span><span id="__span-46-2"><a id="__codelineno-46-2" name="__codelineno-46-2" href="#__codelineno-46-2"></a> <span class="n">sketch_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
</span><span id="__span-46-3"><a id="__codelineno-46-3" name="__codelineno-46-3" href="#__codelineno-46-3"></a> <span class="n">angle</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">360.0</span><span class="p">,</span>
</span><span id="__span-46-4"><a id="__codelineno-46-4" name="__codelineno-46-4" href="#__codelineno-46-4"></a> <span class="n">axis</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"Base_X"</span><span class="p">,</span>
</span><span id="__span-46-5"><a id="__codelineno-46-5" name="__codelineno-46-5" href="#__codelineno-46-5"></a> <span class="n">symmetric</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
</span><span id="__span-46-6"><a id="__codelineno-46-6" name="__codelineno-46-6" href="#__codelineno-46-6"></a> <span class="nb">reversed</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
</span><span id="__span-46-7"><a id="__codelineno-46-7" name="__codelineno-46-7" href="#__codelineno-46-7"></a> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span><span id="__span-46-8"><a id="__codelineno-46-8" name="__codelineno-46-8" href="#__codelineno-46-8"></a> <span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-46-9"><a id="__codelineno-46-9" name="__codelineno-46-9" href="#__codelineno-46-9"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h4 id="create_hole">create_hole<a class="headerlink" href="#create_hole" title="Permanent link"></a></h4> <p>Create parametric holes with optional threading.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-47-1"><a id="__codelineno-47-1" name="__codelineno-47-1" href="#__codelineno-47-1"></a><span class="n">create_hole</span><span class="p">(</span>
</span><span id="__span-47-2"><a id="__codelineno-47-2" name="__codelineno-47-2" href="#__codelineno-47-2"></a> <span class="n">sketch_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="c1"># Sketch with center point(s)</span>
</span><span id="__span-47-3"><a id="__codelineno-47-3" name="__codelineno-47-3" href="#__codelineno-47-3"></a> <span class="n">diameter</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">6.0</span><span class="p">,</span>
</span><span id="__span-47-4"><a id="__codelineno-47-4" name="__codelineno-47-4" href="#__codelineno-47-4"></a> <span class="n">depth</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">10.0</span><span class="p">,</span>
</span><span id="__span-47-5"><a id="__codelineno-47-5" name="__codelineno-47-5" href="#__codelineno-47-5"></a> <span class="n">hole_type</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"Dimension"</span><span class="p">,</span> <span class="c1"># "Dimension", "ThroughAll", "UpToFirst"</span>
</span><span id="__span-47-6"><a id="__codelineno-47-6" name="__codelineno-47-6" href="#__codelineno-47-6"></a> <span class="n">threaded</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
</span><span id="__span-47-7"><a id="__codelineno-47-7" name="__codelineno-47-7" href="#__codelineno-47-7"></a> <span class="n">thread_type</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"ISO"</span><span class="p">,</span> <span class="c1"># "ISO", "UNC", "UNF"</span>
</span><span id="__span-47-8"><a id="__codelineno-47-8" name="__codelineno-47-8" href="#__codelineno-47-8"></a> <span class="n">thread_size</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"M6"</span><span class="p">,</span>
</span><span id="__span-47-9"><a id="__codelineno-47-9" name="__codelineno-47-9" href="#__codelineno-47-9"></a> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span><span id="__span-47-10"><a id="__codelineno-47-10" name="__codelineno-47-10" href="#__codelineno-47-10"></a> <span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-47-11"><a id="__codelineno-47-11" name="__codelineno-47-11" href="#__codelineno-47-11"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h3 id="edge-operations">Edge Operations<a class="headerlink" href="#edge-operations" title="Permanent link"></a></h3> <h4 id="fillet_edges">fillet_edges<a class="headerlink" href="#fillet_edges" title="Permanent link"></a></h4> <p>Add rounded edges.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-48-1"><a id="__codelineno-48-1" name="__codelineno-48-1" href="#__codelineno-48-1"></a><span class="n">fillet_edges</span><span class="p">(</span>
</span><span id="__span-48-2"><a id="__codelineno-48-2" name="__codelineno-48-2" href="#__codelineno-48-2"></a> <span class="n">object_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
</span><span id="__span-48-3"><a id="__codelineno-48-3" name="__codelineno-48-3" href="#__codelineno-48-3"></a> <span class="n">radius</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span>
</span><span id="__span-48-4"><a id="__codelineno-48-4" name="__codelineno-48-4" href="#__codelineno-48-4"></a> <span class="n">edges</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="c1"># ["Edge1", "Edge2"] or None for all</span>
</span><span id="__span-48-5"><a id="__codelineno-48-5" name="__codelineno-48-5" href="#__codelineno-48-5"></a> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span><span id="__span-48-6"><a id="__codelineno-48-6" name="__codelineno-48-6" href="#__codelineno-48-6"></a> <span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-48-7"><a id="__codelineno-48-7" name="__codelineno-48-7" href="#__codelineno-48-7"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h4 id="chamfer_edges">chamfer_edges<a class="headerlink" href="#chamfer_edges" title="Permanent link"></a></h4> <p>Add beveled edges.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-49-1"><a id="__codelineno-49-1" name="__codelineno-49-1" href="#__codelineno-49-1"></a><span class="n">chamfer_edges</span><span class="p">(</span>
</span><span id="__span-49-2"><a id="__codelineno-49-2" name="__codelineno-49-2" href="#__codelineno-49-2"></a> <span class="n">object_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
</span><span id="__span-49-3"><a id="__codelineno-49-3" name="__codelineno-49-3" href="#__codelineno-49-3"></a> <span class="n">size</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span>
</span><span id="__span-49-4"><a id="__codelineno-49-4" name="__codelineno-49-4" href="#__codelineno-49-4"></a> <span class="n">edges</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span><span id="__span-49-5"><a id="__codelineno-49-5" name="__codelineno-49-5" href="#__codelineno-49-5"></a> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span><span id="__span-49-6"><a id="__codelineno-49-6" name="__codelineno-49-6" href="#__codelineno-49-6"></a> <span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-49-7"><a id="__codelineno-49-7" name="__codelineno-49-7" href="#__codelineno-49-7"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h3 id="patterns">Patterns<a class="headerlink" href="#patterns" title="Permanent link"></a></h3> <h4 id="linear_pattern">linear_pattern<a class="headerlink" href="#linear_pattern" title="Permanent link"></a></h4> <p>Repeat a feature in a linear direction.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-50-1"><a id="__codelineno-50-1" name="__codelineno-50-1" href="#__codelineno-50-1"></a><span class="n">linear_pattern</span><span class="p">(</span>
</span><span id="__span-50-2"><a id="__codelineno-50-2" name="__codelineno-50-2" href="#__codelineno-50-2"></a> <span class="n">feature_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
</span><span id="__span-50-3"><a id="__codelineno-50-3" name="__codelineno-50-3" href="#__codelineno-50-3"></a> <span class="n">direction</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"X"</span><span class="p">,</span> <span class="c1"># "X", "Y", "Z"</span>
</span><span id="__span-50-4"><a id="__codelineno-50-4" name="__codelineno-50-4" href="#__codelineno-50-4"></a> <span class="n">length</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">50.0</span><span class="p">,</span>
</span><span id="__span-50-5"><a id="__codelineno-50-5" name="__codelineno-50-5" href="#__codelineno-50-5"></a> <span class="n">occurrences</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">3</span><span class="p">,</span>
</span><span id="__span-50-6"><a id="__codelineno-50-6" name="__codelineno-50-6" href="#__codelineno-50-6"></a> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span><span id="__span-50-7"><a id="__codelineno-50-7" name="__codelineno-50-7" href="#__codelineno-50-7"></a> <span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-50-8"><a id="__codelineno-50-8" name="__codelineno-50-8" href="#__codelineno-50-8"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h4 id="polar_pattern">polar_pattern<a class="headerlink" href="#polar_pattern" title="Permanent link"></a></h4> <p>Repeat a feature around an axis.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-51-1"><a id="__codelineno-51-1" name="__codelineno-51-1" href="#__codelineno-51-1"></a><span class="n">polar_pattern</span><span class="p">(</span>
</span><span id="__span-51-2"><a id="__codelineno-51-2" name="__codelineno-51-2" href="#__codelineno-51-2"></a> <span class="n">feature_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
</span><span id="__span-51-3"><a id="__codelineno-51-3" name="__codelineno-51-3" href="#__codelineno-51-3"></a> <span class="n">axis</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"Z"</span><span class="p">,</span> <span class="c1"># "X", "Y", "Z"</span>
</span><span id="__span-51-4"><a id="__codelineno-51-4" name="__codelineno-51-4" href="#__codelineno-51-4"></a> <span class="n">angle</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">360.0</span><span class="p">,</span>
</span><span id="__span-51-5"><a id="__codelineno-51-5" name="__codelineno-51-5" href="#__codelineno-51-5"></a> <span class="n">occurrences</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">6</span><span class="p">,</span>
</span><span id="__span-51-6"><a id="__codelineno-51-6" name="__codelineno-51-6" href="#__codelineno-51-6"></a> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span><span id="__span-51-7"><a id="__codelineno-51-7" name="__codelineno-51-7" href="#__codelineno-51-7"></a> <span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-51-8"><a id="__codelineno-51-8" name="__codelineno-51-8" href="#__codelineno-51-8"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h4 id="mirrored_feature">mirrored_feature<a class="headerlink" href="#mirrored_feature" title="Permanent link"></a></h4> <p>Mirror a feature across a plane.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-52-1"><a id="__codelineno-52-1" name="__codelineno-52-1" href="#__codelineno-52-1"></a><span class="n">mirrored_feature</span><span class="p">(</span>
</span><span id="__span-52-2"><a id="__codelineno-52-2" name="__codelineno-52-2" href="#__codelineno-52-2"></a> <span class="n">feature_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
</span><span id="__span-52-3"><a id="__codelineno-52-3" name="__codelineno-52-3" href="#__codelineno-52-3"></a> <span class="n">plane</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"XY"</span><span class="p">,</span> <span class="c1"># "XY", "XZ", "YZ"</span>
</span><span id="__span-52-4"><a id="__codelineno-52-4" name="__codelineno-52-4" href="#__codelineno-52-4"></a> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span><span id="__span-52-5"><a id="__codelineno-52-5" name="__codelineno-52-5" href="#__codelineno-52-5"></a> <span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-52-6"><a id="__codelineno-52-6" name="__codelineno-52-6" href="#__codelineno-52-6"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <hr> <h2 id="export-tools">Export Tools<a class="headerlink" href="#export-tools" title="Permanent link"></a></h2> <p>Tools for importing and exporting CAD files.</p> <h3 id="export_step">export_step<a class="headerlink" href="#export_step" title="Permanent link"></a></h3> <p>Export objects to STEP format.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-53-1"><a id="__codelineno-53-1" name="__codelineno-53-1" href="#__codelineno-53-1"></a><span class="n">export_step</span><span class="p">(</span>
</span><span id="__span-53-2"><a id="__codelineno-53-2" name="__codelineno-53-2" href="#__codelineno-53-2"></a> <span class="n">file_path</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
</span><span id="__span-53-3"><a id="__codelineno-53-3" name="__codelineno-53-3" href="#__codelineno-53-3"></a> <span class="n">object_names</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="c1"># None = all visible</span>
</span><span id="__span-53-4"><a id="__codelineno-53-4" name="__codelineno-53-4" href="#__codelineno-53-4"></a> <span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-53-5"><a id="__codelineno-53-5" name="__codelineno-53-5" href="#__codelineno-53-5"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h3 id="export_stl">export_stl<a class="headerlink" href="#export_stl" title="Permanent link"></a></h3> <p>Export objects to STL format (for 3D printing).</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-54-1"><a id="__codelineno-54-1" name="__codelineno-54-1" href="#__codelineno-54-1"></a><span class="n">export_stl</span><span class="p">(</span>
</span><span id="__span-54-2"><a id="__codelineno-54-2" name="__codelineno-54-2" href="#__codelineno-54-2"></a> <span class="n">file_path</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
</span><span id="__span-54-3"><a id="__codelineno-54-3" name="__codelineno-54-3" href="#__codelineno-54-3"></a> <span class="n">object_names</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span><span id="__span-54-4"><a id="__codelineno-54-4" name="__codelineno-54-4" href="#__codelineno-54-4"></a> <span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span><span id="__span-54-5"><a id="__codelineno-54-5" name="__codelineno-54-5" href="#__codelineno-54-5"></a> <span class="n">mesh_tolerance</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">0.1</span>
</span><span id="__span-54-6"><a id="__codelineno-54-6" name="__codelineno-54-6" href="#__codelineno-54-6"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h3 id="export_3mf">export_3mf<a class="headerlink" href="#export_3mf" title="Permanent link"></a></h3> <p>Export objects to 3MF format (modern 3D printing format).</p> <p>3MF (3D Manufacturing Format) supports richer data than STL, including colors, materials, and print settings. It is increasingly preferred over STL for 3D printing.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-55-1"><a id="__codelineno-55-1" name="__codelineno-55-1" href="#__codelineno-55-1"></a><span class="n">export_3mf</span><span class="p">(</span>
</span><span id="__span-55-2"><a id="__codelineno-55-2" name="__codelineno-55-2" href="#__codelineno-55-2"></a> <span class="n">file_path</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
</span><span id="__span-55-3"><a id="__codelineno-55-3" name="__codelineno-55-3" href="#__codelineno-55-3"></a> <span class="n">object_names</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span><span id="__span-55-4"><a id="__codelineno-55-4" name="__codelineno-55-4" href="#__codelineno-55-4"></a> <span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span><span id="__span-55-5"><a id="__codelineno-55-5" name="__codelineno-55-5" href="#__codelineno-55-5"></a> <span class="n">mesh_tolerance</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">0.1</span>
</span><span id="__span-55-6"><a id="__codelineno-55-6" name="__codelineno-55-6" href="#__codelineno-55-6"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h3 id="export_obj">export_obj<a class="headerlink" href="#export_obj" title="Permanent link"></a></h3> <p>Export objects to OBJ format.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-56-1"><a id="__codelineno-56-1" name="__codelineno-56-1" href="#__codelineno-56-1"></a><span class="n">export_obj</span><span class="p">(</span>
</span><span id="__span-56-2"><a id="__codelineno-56-2" name="__codelineno-56-2" href="#__codelineno-56-2"></a> <span class="n">file_path</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
</span><span id="__span-56-3"><a id="__codelineno-56-3" name="__codelineno-56-3" href="#__codelineno-56-3"></a> <span class="n">object_names</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span><span id="__span-56-4"><a id="__codelineno-56-4" name="__codelineno-56-4" href="#__codelineno-56-4"></a> <span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-56-5"><a id="__codelineno-56-5" name="__codelineno-56-5" href="#__codelineno-56-5"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h3 id="export_iges">export_iges<a class="headerlink" href="#export_iges" title="Permanent link"></a></h3> <p>Export objects to IGES format.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-57-1"><a id="__codelineno-57-1" name="__codelineno-57-1" href="#__codelineno-57-1"></a><span class="n">export_iges</span><span class="p">(</span>
</span><span id="__span-57-2"><a id="__codelineno-57-2" name="__codelineno-57-2" href="#__codelineno-57-2"></a> <span class="n">file_path</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
</span><span id="__span-57-3"><a id="__codelineno-57-3" name="__codelineno-57-3" href="#__codelineno-57-3"></a> <span class="n">object_names</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span><span id="__span-57-4"><a id="__codelineno-57-4" name="__codelineno-57-4" href="#__codelineno-57-4"></a> <span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-57-5"><a id="__codelineno-57-5" name="__codelineno-57-5" href="#__codelineno-57-5"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h3 id="import_step">import_step<a class="headerlink" href="#import_step" title="Permanent link"></a></h3> <p>Import a STEP file.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-58-1"><a id="__codelineno-58-1" name="__codelineno-58-1" href="#__codelineno-58-1"></a><span class="n">import_step</span><span class="p">(</span>
</span><span id="__span-58-2"><a id="__codelineno-58-2" name="__codelineno-58-2" href="#__codelineno-58-2"></a> <span class="n">file_path</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
</span><span id="__span-58-3"><a id="__codelineno-58-3" name="__codelineno-58-3" href="#__codelineno-58-3"></a> <span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-58-4"><a id="__codelineno-58-4" name="__codelineno-58-4" href="#__codelineno-58-4"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h3 id="import_stl">import_stl<a class="headerlink" href="#import_stl" title="Permanent link"></a></h3> <p>Import an STL file.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-59-1"><a id="__codelineno-59-1" name="__codelineno-59-1" href="#__codelineno-59-1"></a><span class="n">import_stl</span><span class="p">(</span>
</span><span id="__span-59-2"><a id="__codelineno-59-2" name="__codelineno-59-2" href="#__codelineno-59-2"></a> <span class="n">file_path</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
</span><span id="__span-59-3"><a id="__codelineno-59-3" name="__codelineno-59-3" href="#__codelineno-59-3"></a> <span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-59-4"><a id="__codelineno-59-4" name="__codelineno-59-4" href="#__codelineno-59-4"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <hr> <h2 id="view-tools">View Tools<a class="headerlink" href="#view-tools" title="Permanent link"></a></h2> <p>Tools for controlling the 3D view and capturing screenshots.</p> <h3 id="screenshots">Screenshots<a class="headerlink" href="#screenshots" title="Permanent link"></a></h3> <h4 id="get_screenshot">get_screenshot<a class="headerlink" href="#get_screenshot" title="Permanent link"></a></h4> <p>Capture a screenshot of the 3D view.</p> <p><strong>Requires GUI mode.</strong></p> <div class="language-python highlight"><pre><span></span><code><span id="__span-60-1"><a id="__codelineno-60-1" name="__codelineno-60-1" href="#__codelineno-60-1"></a><span class="n">get_screenshot</span><span class="p">(</span>
</span><span id="__span-60-2"><a id="__codelineno-60-2" name="__codelineno-60-2" href="#__codelineno-60-2"></a> <span class="n">view_angle</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"Isometric"</span><span class="p">,</span>
</span><span id="__span-60-3"><a id="__codelineno-60-3" name="__codelineno-60-3" href="#__codelineno-60-3"></a> <span class="n">width</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">800</span><span class="p">,</span>
</span><span id="__span-60-4"><a id="__codelineno-60-4" name="__codelineno-60-4" href="#__codelineno-60-4"></a> <span class="n">height</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">600</span><span class="p">,</span>
</span><span id="__span-60-5"><a id="__codelineno-60-5" name="__codelineno-60-5" href="#__codelineno-60-5"></a> <span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-60-6"><a id="__codelineno-60-6" name="__codelineno-60-6" href="#__codelineno-60-6"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span> <span class="c1"># Returns base64-encoded PNG</span>
</span></code></pre></div> <p><strong>View angles:</strong> <code>Isometric</code>, <code>Front</code>, <code>Back</code>, <code>Top</code>, <code>Bottom</code>, <code>Left</code>, <code>Right</code>, <code>FitAll</code></p> <h3 id="view-control">View Control<a class="headerlink" href="#view-control" title="Permanent link"></a></h3> <h4 id="set_view_angle">set_view_angle<a class="headerlink" href="#set_view_angle" title="Permanent link"></a></h4> <p>Set the 3D view angle.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-61-1"><a id="__codelineno-61-1" name="__codelineno-61-1" href="#__codelineno-61-1"></a><span class="n">set_view_angle</span><span class="p">(</span>
</span><span id="__span-61-2"><a id="__codelineno-61-2" name="__codelineno-61-2" href="#__codelineno-61-2"></a> <span class="n">view_angle</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="c1"># Same options as get_screenshot</span>
</span><span id="__span-61-3"><a id="__codelineno-61-3" name="__codelineno-61-3" href="#__codelineno-61-3"></a> <span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-61-4"><a id="__codelineno-61-4" name="__codelineno-61-4" href="#__codelineno-61-4"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h4 id="fit_all">fit_all<a class="headerlink" href="#fit_all" title="Permanent link"></a></h4> <p>Fit all objects in the view.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-62-1"><a id="__codelineno-62-1" name="__codelineno-62-1" href="#__codelineno-62-1"></a><span class="n">fit_all</span><span class="p">(</span><span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h4 id="zoom_in-zoom_out">zoom_in / zoom_out<a class="headerlink" href="#zoom_in-zoom_out" title="Permanent link"></a></h4> <p>Zoom the view.</p> <p><strong>Requires GUI mode.</strong></p> <div class="language-python highlight"><pre><span></span><code><span id="__span-63-1"><a id="__codelineno-63-1" name="__codelineno-63-1" href="#__codelineno-63-1"></a><span class="n">zoom_in</span><span class="p">(</span><span class="n">factor</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">1.5</span><span class="p">,</span> <span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span><span id="__span-63-2"><a id="__codelineno-63-2" name="__codelineno-63-2" href="#__codelineno-63-2"></a><span class="n">zoom_out</span><span class="p">(</span><span class="n">factor</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">1.5</span><span class="p">,</span> <span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h4 id="set_camera_position">set_camera_position<a class="headerlink" href="#set_camera_position" title="Permanent link"></a></h4> <p>Set custom camera position.</p> <p><strong>Requires GUI mode.</strong></p> <div class="language-python highlight"><pre><span></span><code><span id="__span-64-1"><a id="__codelineno-64-1" name="__codelineno-64-1" href="#__codelineno-64-1"></a><span class="n">set_camera_position</span><span class="p">(</span>
</span><span id="__span-64-2"><a id="__codelineno-64-2" name="__codelineno-64-2" href="#__codelineno-64-2"></a> <span class="n">position</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="nb">float</span><span class="p">],</span> <span class="c1"># [x, y, z]</span>
</span><span id="__span-64-3"><a id="__codelineno-64-3" name="__codelineno-64-3" href="#__codelineno-64-3"></a> <span class="n">look_at</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="nb">float</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="c1"># Default: origin</span>
</span><span id="__span-64-4"><a id="__codelineno-64-4" name="__codelineno-64-4" href="#__codelineno-64-4"></a> <span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-64-5"><a id="__codelineno-64-5" name="__codelineno-64-5" href="#__codelineno-64-5"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h3 id="object-appearance">Object Appearance<a class="headerlink" href="#object-appearance" title="Permanent link"></a></h3> <h4 id="set_object_visibility">set_object_visibility<a class="headerlink" href="#set_object_visibility" title="Permanent link"></a></h4> <p>Show or hide an object.</p> <p><strong>Requires GUI mode.</strong></p> <div class="language-python highlight"><pre><span></span><code><span id="__span-65-1"><a id="__codelineno-65-1" name="__codelineno-65-1" href="#__codelineno-65-1"></a><span class="n">set_object_visibility</span><span class="p">(</span>
</span><span id="__span-65-2"><a id="__codelineno-65-2" name="__codelineno-65-2" href="#__codelineno-65-2"></a> <span class="n">object_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
</span><span id="__span-65-3"><a id="__codelineno-65-3" name="__codelineno-65-3" href="#__codelineno-65-3"></a> <span class="n">visible</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span>
</span><span id="__span-65-4"><a id="__codelineno-65-4" name="__codelineno-65-4" href="#__codelineno-65-4"></a> <span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-65-5"><a id="__codelineno-65-5" name="__codelineno-65-5" href="#__codelineno-65-5"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h4 id="set_display_mode">set_display_mode<a class="headerlink" href="#set_display_mode" title="Permanent link"></a></h4> <p>Set object display mode.</p> <p><strong>Requires GUI mode.</strong></p> <div class="language-python highlight"><pre><span></span><code><span id="__span-66-1"><a id="__codelineno-66-1" name="__codelineno-66-1" href="#__codelineno-66-1"></a><span class="n">set_display_mode</span><span class="p">(</span>
</span><span id="__span-66-2"><a id="__codelineno-66-2" name="__codelineno-66-2" href="#__codelineno-66-2"></a> <span class="n">object_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
</span><span id="__span-66-3"><a id="__codelineno-66-3" name="__codelineno-66-3" href="#__codelineno-66-3"></a> <span class="n">mode</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="c1"># "Flat Lines", "Shaded", "Wireframe", "Points"</span>
</span><span id="__span-66-4"><a id="__codelineno-66-4" name="__codelineno-66-4" href="#__codelineno-66-4"></a> <span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-66-5"><a id="__codelineno-66-5" name="__codelineno-66-5" href="#__codelineno-66-5"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h4 id="set_object_color">set_object_color<a class="headerlink" href="#set_object_color" title="Permanent link"></a></h4> <p>Set object color.</p> <p><strong>Requires GUI mode.</strong></p> <div class="language-python highlight"><pre><span></span><code><span id="__span-67-1"><a id="__codelineno-67-1" name="__codelineno-67-1" href="#__codelineno-67-1"></a><span class="n">set_object_color</span><span class="p">(</span>
</span><span id="__span-67-2"><a id="__codelineno-67-2" name="__codelineno-67-2" href="#__codelineno-67-2"></a> <span class="n">object_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
</span><span id="__span-67-3"><a id="__codelineno-67-3" name="__codelineno-67-3" href="#__codelineno-67-3"></a> <span class="n">color</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="nb">float</span><span class="p">],</span> <span class="c1"># [r, g, b] where values are 0.0-1.0</span>
</span><span id="__span-67-4"><a id="__codelineno-67-4" name="__codelineno-67-4" href="#__codelineno-67-4"></a> <span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-67-5"><a id="__codelineno-67-5" name="__codelineno-67-5" href="#__codelineno-67-5"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h3 id="workbenches">Workbenches<a class="headerlink" href="#workbenches" title="Permanent link"></a></h3> <h4 id="list_workbenches">list_workbenches<a class="headerlink" href="#list_workbenches" title="Permanent link"></a></h4> <p>List available workbenches.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-68-1"><a id="__codelineno-68-1" name="__codelineno-68-1" href="#__codelineno-68-1"></a><span class="n">list_workbenches</span><span class="p">()</span> <span class="o">-&gt;</span> <span class="nb">list</span><span class="p">[</span><span class="nb">dict</span><span class="p">]</span>
</span></code></pre></div> <h4 id="activate_workbench">activate_workbench<a class="headerlink" href="#activate_workbench" title="Permanent link"></a></h4> <p>Activate a workbench.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-69-1"><a id="__codelineno-69-1" name="__codelineno-69-1" href="#__codelineno-69-1"></a><span class="n">activate_workbench</span><span class="p">(</span><span class="n">workbench_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <p><strong>Common workbenches:</strong></p> <ul> <li><code>PartWorkbench</code> - Part modeling</li> <li><code>PartDesignWorkbench</code> - Parametric design</li> <li><code>SketcherWorkbench</code> - 2D sketching</li> <li><code>DraftWorkbench</code> - 2D drafting</li> <li><code>MeshWorkbench</code> - Mesh operations</li> </ul> <h3 id="undoredo">Undo/Redo<a class="headerlink" href="#undoredo" title="Permanent link"></a></h3> <h4 id="undo-redo">undo / redo<a class="headerlink" href="#undo-redo" title="Permanent link"></a></h4> <p>Undo or redo operations.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-70-1"><a id="__codelineno-70-1" name="__codelineno-70-1" href="#__codelineno-70-1"></a><span class="n">undo</span><span class="p">(</span><span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span><span id="__span-70-2"><a id="__codelineno-70-2" name="__codelineno-70-2" href="#__codelineno-70-2"></a><span class="n">redo</span><span class="p">(</span><span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h4 id="get_undo_redo_status">get_undo_redo_status<a class="headerlink" href="#get_undo_redo_status" title="Permanent link"></a></h4> <p>Get undo/redo availability.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-71-1"><a id="__codelineno-71-1" name="__codelineno-71-1" href="#__codelineno-71-1"></a><span class="n">get_undo_redo_status</span><span class="p">(</span><span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h3 id="parts-library">Parts Library<a class="headerlink" href="#parts-library" title="Permanent link"></a></h3> <h4 id="list_parts_library">list_parts_library<a class="headerlink" href="#list_parts_library" title="Permanent link"></a></h4> <p>List available library parts.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-72-1"><a id="__codelineno-72-1" name="__codelineno-72-1" href="#__codelineno-72-1"></a><span class="n">list_parts_library</span><span class="p">()</span> <span class="o">-&gt;</span> <span class="nb">list</span><span class="p">[</span><span class="nb">dict</span><span class="p">]</span>
</span></code></pre></div> <h4 id="insert_part_from_library">insert_part_from_library<a class="headerlink" href="#insert_part_from_library" title="Permanent link"></a></h4> <p>Insert a part from the library.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-73-1"><a id="__codelineno-73-1" name="__codelineno-73-1" href="#__codelineno-73-1"></a><span class="n">insert_part_from_library</span><span class="p">(</span>
</span><span id="__span-73-2"><a id="__codelineno-73-2" name="__codelineno-73-2" href="#__codelineno-73-2"></a> <span class="n">part_path</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
</span><span id="__span-73-3"><a id="__codelineno-73-3" name="__codelineno-73-3" href="#__codelineno-73-3"></a> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span><span id="__span-73-4"><a id="__codelineno-73-4" name="__codelineno-73-4" href="#__codelineno-73-4"></a> <span class="n">position</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="nb">float</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span><span id="__span-73-5"><a id="__codelineno-73-5" name="__codelineno-73-5" href="#__codelineno-73-5"></a> <span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-73-6"><a id="__codelineno-73-6" name="__codelineno-73-6" href="#__codelineno-73-6"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h3 id="utility">Utility<a class="headerlink" href="#utility" title="Permanent link"></a></h3> <h4 id="get_console_log">get_console_log<a class="headerlink" href="#get_console_log" title="Permanent link"></a></h4> <p>Get FreeCAD console output.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-74-1"><a id="__codelineno-74-1" name="__codelineno-74-1" href="#__codelineno-74-1"></a><span class="n">get_console_log</span><span class="p">(</span><span class="n">lines</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">50</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h4 id="recompute">recompute<a class="headerlink" href="#recompute" title="Permanent link"></a></h4> <p>Force recompute of all objects.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-75-1"><a id="__codelineno-75-1" name="__codelineno-75-1" href="#__codelineno-75-1"></a><span class="n">recompute</span><span class="p">(</span><span class="n">doc_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <hr> <h2 id="macro-tools">Macro Tools<a class="headerlink" href="#macro-tools" title="Permanent link"></a></h2> <p>Tools for managing FreeCAD macros.</p> <h3 id="list_macros">list_macros<a class="headerlink" href="#list_macros" title="Permanent link"></a></h3> <p>List available macros.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-76-1"><a id="__codelineno-76-1" name="__codelineno-76-1" href="#__codelineno-76-1"></a><span class="n">list_macros</span><span class="p">()</span> <span class="o">-&gt;</span> <span class="nb">list</span><span class="p">[</span><span class="nb">dict</span><span class="p">]</span>
</span></code></pre></div> <h3 id="run_macro">run_macro<a class="headerlink" href="#run_macro" title="Permanent link"></a></h3> <p>Execute a macro by name.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-77-1"><a id="__codelineno-77-1" name="__codelineno-77-1" href="#__codelineno-77-1"></a><span class="n">run_macro</span><span class="p">(</span>
</span><span id="__span-77-2"><a id="__codelineno-77-2" name="__codelineno-77-2" href="#__codelineno-77-2"></a> <span class="n">macro_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
</span><span id="__span-77-3"><a id="__codelineno-77-3" name="__codelineno-77-3" href="#__codelineno-77-3"></a> <span class="n">args</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="__span-77-4"><a id="__codelineno-77-4" name="__codelineno-77-4" href="#__codelineno-77-4"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h3 id="create_macro">create_macro<a class="headerlink" href="#create_macro" title="Permanent link"></a></h3> <p>Create a new macro.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-78-1"><a id="__codelineno-78-1" name="__codelineno-78-1" href="#__codelineno-78-1"></a><span class="n">create_macro</span><span class="p">(</span>
</span><span id="__span-78-2"><a id="__codelineno-78-2" name="__codelineno-78-2" href="#__codelineno-78-2"></a> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
</span><span id="__span-78-3"><a id="__codelineno-78-3" name="__codelineno-78-3" href="#__codelineno-78-3"></a> <span class="n">code</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
</span><span id="__span-78-4"><a id="__codelineno-78-4" name="__codelineno-78-4" href="#__codelineno-78-4"></a> <span class="n">description</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">""</span>
</span><span id="__span-78-5"><a id="__codelineno-78-5" name="__codelineno-78-5" href="#__codelineno-78-5"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h3 id="read_macro">read_macro<a class="headerlink" href="#read_macro" title="Permanent link"></a></h3> <p>Read macro contents.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-79-1"><a id="__codelineno-79-1" name="__codelineno-79-1" href="#__codelineno-79-1"></a><span class="n">read_macro</span><span class="p">(</span><span class="n">macro_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h3 id="delete_macro">delete_macro<a class="headerlink" href="#delete_macro" title="Permanent link"></a></h3> <p>Delete a user macro.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-80-1"><a id="__codelineno-80-1" name="__codelineno-80-1" href="#__codelineno-80-1"></a><span class="n">delete_macro</span><span class="p">(</span><span class="n">macro_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <h3 id="create_macro_from_template">create_macro_from_template<a class="headerlink" href="#create_macro_from_template" title="Permanent link"></a></h3> <p>Create macro from a predefined template.</p> <div class="language-python highlight"><pre><span></span><code><span id="__span-81-1"><a id="__codelineno-81-1" name="__codelineno-81-1" href="#__codelineno-81-1"></a><span class="n">create_macro_from_template</span><span class="p">(</span>
</span><span id="__span-81-2"><a id="__codelineno-81-2" name="__codelineno-81-2" href="#__codelineno-81-2"></a> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
</span><span id="__span-81-3"><a id="__codelineno-81-3" name="__codelineno-81-3" href="#__codelineno-81-3"></a> <span class="n">template</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"basic"</span><span class="p">,</span> <span class="c1"># "basic", "part", "sketch", "gui", "selection"</span>
</span><span id="__span-81-4"><a id="__codelineno-81-4" name="__codelineno-81-4" href="#__codelineno-81-4"></a> <span class="n">description</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">""</span>
</span><span id="__span-81-5"><a id="__codelineno-81-5" name="__codelineno-81-5" href="#__codelineno-81-5"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span>
</span></code></pre></div> <hr> <h2 id="gui-vs-headless-mode">GUI vs Headless Mode<a class="headerlink" href="#gui-vs-headless-mode" title="Permanent link"></a></h2> <p>Some tools require FreeCAD to be running in GUI mode. When running in headless mode, these tools will return an error instead of crashing.</p> <p><strong>GUI-only tools:</strong></p> <ul> <li><code>get_screenshot</code></li> <li><code>set_object_visibility</code></li> <li><code>set_display_mode</code></li> <li><code>set_object_color</code></li> <li><code>zoom_in</code> / <code>zoom_out</code></li> <li><code>set_camera_position</code></li> <li><code>get_selection</code> / <code>set_selection</code> / <code>clear_selection</code></li> </ul> <p><strong>To check mode programmatically:</strong></p> <div class="language-python highlight"><pre><span></span><code><span id="__span-82-1"><a id="__codelineno-82-1" name="__codelineno-82-1" href="#__codelineno-82-1"></a><span class="n">result</span> <span class="o">=</span> <span class="k">await</span> <span class="n">execute_python</span><span class="p">(</span><span class="s2">"_result_ = FreeCAD.GuiUp"</span><span class="p">)</span>
</span><span id="__span-82-2"><a id="__codelineno-82-2" name="__codelineno-82-2" href="#__codelineno-82-2"></a><span class="n">is_gui_mode</span> <span class="o">=</span> <span class="n">result</span><span class="p">[</span><span class="s2">"result"</span><span class="p">]</span>
</span></code></pre></div> <hr> <h2 id="error-handling">Error Handling<a class="headerlink" href="#error-handling" title="Permanent link"></a></h2> <p>All tools return dictionaries with consistent error handling:</p> <p><strong>Success:</strong></p> <div class="language-python highlight"><pre><span></span><code><span id="__span-83-1"><a id="__codelineno-83-1" name="__codelineno-83-1" href="#__codelineno-83-1"></a><span class="p">{</span>
</span><span id="__span-83-2"><a id="__codelineno-83-2" name="__codelineno-83-2" href="#__codelineno-83-2"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
</span><span id="__span-83-3"><a id="__codelineno-83-3" name="__codelineno-83-3" href="#__codelineno-83-3"></a> <span class="s2">"name"</span><span class="p">:</span> <span class="s2">"Box"</span><span class="p">,</span>
</span><span id="__span-83-4"><a id="__codelineno-83-4" name="__codelineno-83-4" href="#__codelineno-83-4"></a> <span class="s2">"volume"</span><span class="p">:</span> <span class="mf">6000.0</span><span class="p">,</span>
</span><span id="__span-83-5"><a id="__codelineno-83-5" name="__codelineno-83-5" href="#__codelineno-83-5"></a> <span class="c1"># ... other fields</span>
</span><span id="__span-83-6"><a id="__codelineno-83-6" name="__codelineno-83-6" href="#__codelineno-83-6"></a><span class="p">}</span>
</span></code></pre></div> <p><strong>Failure:</strong></p> <div class="language-python highlight"><pre><span></span><code><span id="__span-84-1"><a id="__codelineno-84-1" name="__codelineno-84-1" href="#__codelineno-84-1"></a><span class="p">{</span>
</span><span id="__span-84-2"><a id="__codelineno-84-2" name="__codelineno-84-2" href="#__codelineno-84-2"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
</span><span id="__span-84-3"><a id="__codelineno-84-3" name="__codelineno-84-3" href="#__codelineno-84-3"></a> <span class="s2">"error"</span><span class="p">:</span> <span class="s2">"Object not found: MissingBox"</span>
</span><span id="__span-84-4"><a id="__codelineno-84-4" name="__codelineno-84-4" href="#__codelineno-84-4"></a><span class="p">}</span>
</span></code></pre></div> <p>For tools that raise exceptions, wrap calls in try/except or check the returned error field.</p> <aside class="md-source-file"> <span class="md-source-file__fact"> <span class="md-icon" title="Last update"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"></path></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-timeago" title="January 10, 2026 23:26:33 UTC"><span class="timeago" datetime="2026-01-10T23:26:33+00:00" locale="en"></span></span><span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_date" title="January 10, 2026 23:26:33 UTC">2026-01-10</span> </span> <span class="md-source-file__fact"> <span class="md-icon" title="Created"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M14.47 15.08 11 13V7h1.5v5.25l3.08 1.83c-.41.28-.79.62-1.11 1m-1.39 4.84c-.36.05-.71.08-1.08.08-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8c0 .37-.03.72-.08 1.08.69.1 1.33.32 1.92.64.1-.56.16-1.13.16-1.72 0-5.5-4.5-10-10-10S2 6.5 2 12s4.47 10 10 10c.59 0 1.16-.06 1.72-.16-.32-.59-.54-1.23-.64-1.92M18 15v3h-3v2h3v3h2v-3h3v-2h-3v-3z"></path></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-timeago" title="January 4, 2026 00:48:59 UTC"><span class="timeago" datetime="2026-01-04T00:48:59+00:00" locale="en"></span></span><span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_date" title="January 4, 2026 00:48:59 UTC">2026-01-04</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type="button" class="md-top md-icon" data-md-component="top" hidden> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"></path></svg> Back to top </button> </main> <footer class="md-footer"> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class="md-copyright"> Made with <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> Material for MkDocs </a> </div> <div class="md-social"> <a href="https://github.com/spkane/freecad-addon-robust-mcp-server" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"></path></svg> </a> <a href="https://hub.docker.com/r/spkane/freecad-robust-mcp" target="_blank" rel="noopener" title="hub.docker.com" class="md-social__link"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M349.9 236.3h-66.1v-59.4h66.1zm0-204.3h-66.1v60.7h66.1zm78.2 144.8H362v59.4h66.1zm-156.3-72.1h-66.1v60.1h66.1zm78.1 0h-66.1v60.1h66.1zm276.8 100c-14.4-9.7-47.6-13.2-73.1-8.4-3.3-24-16.7-44.9-41.1-63.7l-14-9.3-9.3 14c-18.4 27.8-23.4 73.6-3.7 103.8-8.7 4.7-25.8 11.1-48.4 10.7H2.4c-8.7 50.8 5.8 116.8 44 162.1 37.1 43.9 92.7 66.2 165.4 66.2 157.4 0 273.9-72.5 328.4-204.2 21.4.4 67.6.1 91.3-45.2 1.5-2.5 6.6-13.2 8.5-17.1zm-511.1-27.9h-66v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1zm78.1 0h-66.1v59.4h66.1zm-78.1-72.1h-66.1v60.1h66.1z"></path></svg> </a> <a href="https://pypi.org/project/freecad-robust-mcp/" target="_blank" rel="noopener" title="pypi.org" class="md-social__link"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M439.8 200.5c-7.7-30.9-22.3-54.2-53.4-54.2h-40.1v47.4c0 36.8-31.2 67.8-66.8 67.8H172.7c-29.2 0-53.4 25-53.4 54.3v101.8c0 29 25.2 46 53.4 54.3 33.8 9.9 66.3 11.7 106.8 0 26.9-7.8 53.4-23.5 53.4-54.3v-40.7H226.2v-13.6h160.2c31.1 0 42.6-21.7 53.4-54.2 11.2-33.5 10.7-65.7 0-108.6M286.2 444.7a20.4 20.4 0 1 1 0-40.7 20.4 20.4 0 1 1 0 40.7M167.8 248.1h106.8c29.7 0 53.4-24.5 53.4-54.3V91.9c0-29-24.4-50.7-53.4-55.6-35.8-5.9-74.7-5.6-106.8.1-45.2 8-53.4 24.7-53.4 55.6v40.7h106.9v13.6h-147c-31.1 0-58.3 18.7-66.8 54.2-9.8 40.7-10.2 66.1 0 108.6 7.6 31.6 25.7 54.2 56.8 54.2H101v-48.8c0-35.3 30.5-66.4 66.8-66.4m-6.6-183.4a20.4 20.4 0 1 1 0 40.8 20.4 20.4 0 1 1 0-40.8"></path></svg> </a> </div> </div> </div> </footer> </div> <div class="md-dialog" data-md-component="dialog"> <div class="md-dialog__inner md-typeset"></div> </div> <script id="__config" type="application/json">{"annotate": null, "base": "..", "features": ["content.code.copy", "content.code.annotate", "content.tabs.link", "navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.sections", "navigation.top", "toc.follow", "search.suggest", "search.highlight", "search.share"], "search": "../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": {"default": "latest", "provider": "mike"}}</script> <script src="../assets/javascripts/bundle.79ae519e.min.js"></script> <script src="../js/timeago.min.js"></script> <script src="../js/timeago_mkdocs_material.js"></script> <script id="init-glightbox">const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": true, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "slide"});
document$.subscribe(()=>{ lightbox.reload(); });
</script></body></html>