Skip to content

Commit 36d32fa

Browse files
authored
Merge pull request #7 from GRAPHISOFT/AC29-Documentation
Update documentation to 29.2001
2 parents dd9e2bd + d9f3583 commit 36d32fa

File tree

3,764 files changed

+248969
-187883
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

3,764 files changed

+248969
-187883
lines changed

docs/ChangeContentMod.JPG

11.4 KB
Loading

docs/ChangeContentOrig.JPG

10.8 KB
Loading

docs/_custom_panels.html

Lines changed: 165 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,165 @@
1+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2+
<html xmlns="http://www.w3.org/1999/xhtml">
3+
<head>
4+
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5+
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
6+
<meta name="generator" content="Doxygen 1.12.0"/>
7+
<meta name="viewport" content="width=device-width, initial-scale=1"/>
8+
<!-- BEGIN opengraph metadata -->
9+
<meta property="og:title" content="Archicad C++ API" />
10+
<meta property="og:image" content="logo.svg" />
11+
<meta property="og:description" content="Archicad Development Kit Documentation, best practices, example codes and information hub." />
12+
<meta property="og:url" content="https://archicadapi.graphisoft.com/documentation/" />
13+
<!-- END opengraph metadata -->
14+
<!-- BEGIN twitter metadata -->
15+
<meta name="twitter:image:src" content="logo.svg" />
16+
<meta name="twitter:title" content="Archicad C++ API" />
17+
<meta name="twitter:description" content="Archicad Development Kit Documentation, best practices, example codes and information hub." />
18+
<!-- END twitter metadata -->
19+
<title>Archicad 29 C++ API: Custom panels in settings dialogs</title>
20+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
21+
<script type="text/javascript" src="jquery.js"></script>
22+
<script type="text/javascript" src="dynsections.js"></script>
23+
<script type="text/javascript" src="doxygen-awesome-darkmode-toggle.js"></script>
24+
<script type="text/javascript" src="doxygen-awesome-fragment-copy-button.js"></script>
25+
<script type="text/javascript" src="doxygen-awesome-paragraph-link.js"></script>
26+
<script type="text/javascript" src="doxygen-awesome-interactive-toc.js"></script>
27+
<script type="text/javascript" src="doxygen-awesome-tabs.js"></script>
28+
<script type="text/javascript">
29+
DoxygenAwesomeFragmentCopyButton.init()
30+
DoxygenAwesomeDarkModeToggle.init()
31+
DoxygenAwesomeParagraphLink.init()
32+
DoxygenAwesomeInteractiveToc.init()
33+
DoxygenAwesomeTabs.init()
34+
</script>
35+
<link href="navtree.css" rel="stylesheet" type="text/css"/>
36+
<script type="text/javascript" src="navtreedata.js"></script>
37+
<script type="text/javascript" src="navtree.js"></script>
38+
<script type="text/javascript" src="resize.js"></script>
39+
<script type="text/javascript" src="cookie.js"></script>
40+
<link href="search/search.css" rel="stylesheet" type="text/css"/>
41+
<script type="text/javascript" src="search/searchdata.js"></script>
42+
<script type="text/javascript" src="search/search.js"></script>
43+
<link href="doxygen.css" rel="stylesheet" type="text/css" />
44+
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
45+
<link href="doxygen-awesome-sidebar-only.css" rel="stylesheet" type="text/css"/>
46+
<link href="doxygen-awesome-sidebar-only-darkmode-toggle.css" rel="stylesheet" type="text/css"/>
47+
<link href="custom.css" rel="stylesheet" type="text/css"/>
48+
<link href="https://fonts.cdnfonts.com/css/proxima-nova-2" rel="stylesheet">
49+
<link rel="icon" href="logo.svg" />
50+
</head>
51+
<body>
52+
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
53+
<div id="titlearea">
54+
<table cellspacing="0" cellpadding="0">
55+
<tbody>
56+
<tr style="height: 56px;">
57+
<td id="projectlogo"><img alt="Logo" src="logo.svg"/></td>
58+
<td id="projectalign" style="padding-left: 0.5em;">
59+
<div id="projectname">Archicad 29 C++ API
60+
</div>
61+
</td>
62+
</tr>
63+
</tbody>
64+
</table>
65+
</div>
66+
<!-- end header part -->
67+
<!-- Generated by Doxygen 1.12.0 -->
68+
<script type="text/javascript">
69+
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
70+
var searchBox = new SearchBox("searchBox", "search/",'.html');
71+
/* @license-end */
72+
</script>
73+
<script type="text/javascript">
74+
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
75+
$(function() { codefold.init(0); });
76+
/* @license-end */
77+
</script>
78+
<script type="text/javascript" src="menudata.js"></script>
79+
<script type="text/javascript" src="menu.js"></script>
80+
<script type="text/javascript">
81+
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
82+
$(function() {
83+
initMenu('',true,false,'search.php','Search',true);
84+
$(function() { init_search(); });
85+
});
86+
/* @license-end */
87+
</script>
88+
<div id="main-nav"></div>
89+
</div><!-- top -->
90+
<div id="side-nav" class="ui-resizable side-nav-resizable">
91+
<div id="nav-tree">
92+
<div id="nav-tree-contents">
93+
<div id="nav-sync" class="sync"></div>
94+
</div>
95+
</div>
96+
<div id="splitbar" style="-moz-user-select:none;"
97+
class="ui-resizable-handle">
98+
</div>
99+
</div>
100+
<script type="text/javascript">
101+
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
102+
$(function(){initNavTree('_custom_panels.html',''); initResizable(true); });
103+
/* @license-end */
104+
</script>
105+
<div id="doc-content">
106+
<!-- window showing the filter options -->
107+
<div id="MSearchSelectWindow"
108+
onmouseover="return searchBox.OnSearchSelectShow()"
109+
onmouseout="return searchBox.OnSearchSelectHide()"
110+
onkeydown="return searchBox.OnSearchSelectKey(event)">
111+
</div>
112+
113+
<!-- iframe showing the search results (closed by default) -->
114+
<div id="MSearchResultsWindow">
115+
<div id="MSearchResults">
116+
<div class="SRPage">
117+
<div id="SRIndex">
118+
<div id="SRResults"></div>
119+
<div class="SRStatus" id="Loading">Loading...</div>
120+
<div class="SRStatus" id="Searching">Searching...</div>
121+
<div class="SRStatus" id="NoMatches">No Matches</div>
122+
</div>
123+
</div>
124+
</div>
125+
</div>
126+
127+
<div><div class="header">
128+
<div class="headertitle"><div class="title">Custom panels in settings dialogs</div></div>
129+
</div><!--header-->
130+
<div class="contents">
131+
<div class="textblock"><h1><a class="anchor" id="autotoc_md8"></a>
132+
Custom panels in settings dialogs</h1>
133+
<p>From Archicad 8 you have possibility to add user interface components integrated into the standard settings dialogs to handle your custom element and attribute data. You can append your additional panels into the</p>
134+
<ul>
135+
<li>element settings dialogs</li>
136+
<li>attribute settings dialogs</li>
137+
<li>info box</li>
138+
</ul>
139+
<h2><a class="anchor" id="autotoc_md9"></a>
140+
Registration of panels</h2>
141+
<p>First in the <a class="el" href="group___add_on_lifetime.html#ga3d5b6a23422e44dce66728b0f4eb943e">RegisterInterface</a> function you should let the server application know that the add-on wants to add a custom panel into one of the settings dialogs. The dialog is specified with element ID and variation in case of element settings, or the attribute ID in case of attribute settings. You must also pass the resource IDs of the relevant interface resources, such as the icon and the title string of the panel and the tabpage dialog itself.</p>
142+
<p>From Archicad 11 an optional <code>visibleByDefault</code> parameter is added to control the default appearance of the panel. If you pass <em>true</em>, the panel will be visible on the specified settings dialog or info box, unless the effective Work Environment settings override the actual visibility of the panel.</p>
143+
<p>In Archicad 12 an optional <code>growType</code> parameter is added to control the grow type (none/horizontal/vertical/both) of the element and attribute settings panel.</p>
144+
<p>The details can be found at the description of the functions:</p>
145+
<ul>
146+
<li><a class="el" href="group___add_on_integration.html#ga21fdf6041a8880779b349d2a8ce685c2">ACAPI_AddOnIntegration_RegisterSettingsPanel</a></li>
147+
<li><a class="el" href="group___add_on_integration.html#ga9069a54766487ef3e1c2c8c1ba99f97a">ACAPI_AddOnIntegration_RegisterAttributePanel</a></li>
148+
<li><a class="el" href="group___add_on_integration.html#ga3ff255f04b61d4e618c3d3000ef4a9c9">ACAPI_AddOnIntegration_RegisterInfoBoxPanel</a></li>
149+
</ul>
150+
<h2><a class="anchor" id="autotoc_md10"></a>
151+
Installing the panel handlers</h2>
152+
<p>After registering the custom panels the add-on should initialize the handlers in its <a class="el" href="group___add_on_lifetime.html#gaa8f1f7d553305c1afe5de7e4dcb66e99">Initialize</a> function. In order to be called in the program starting phase the add-on must be preloaded type, that is the return value of the <a class="el" href="group___add_on_lifetime.html#gaf36d63d09853e5344932b63ee23d2bb9">CheckEnvironment</a> must be <b>APIAddon_Preload</b>.</p>
153+
<p>The element or attribute settings panel is represented by an object derived from the <code>TBUI::APIToolUIPanel</code> or <code>VBAD::APIAttrUIPanel</code> classes respectively. These classes contain an observer to the tabpage including the element or attribute data, and a reference to the dialog item itself. The observers are supposed to handle the corresponding database and dialog user action events.</p>
154+
<p>In order to utilize these classes the add-on must include the **_UCLib_**, **_UDLib_** and **_VBElemDialogs_** modules. <em>(The interface of these modules are not documented.)</em></p>
155+
<p>When the panel objects are successfully constructed, the panel creation and destruction handler functions should be passed to the API with <a class="el" href="group___add_on_integration.html#ga29fa171b94724463b999dcbfb3abae27">ACAPI_AddOnIntegration_InstallPanelHandler</a>.</p>
156+
<h2><a class="anchor" id="autotoc_md11"></a>
157+
Creating and destroying the tabpages</h2>
158+
<p>It is important to know that the tab pages as dialog items are constructed only on demand, that is when the user chooses to open a settings dialog, in which your add-on has registered a custom panel, the Dialog Manager builds up the dialog panel-by-panel. When the dialog construction process arrives to your panel, it calls the installed <a class="el" href="group___add_on_integration.html#gafdc162d4dfa6f37018cdaf355a9b13cd">APIPanelCreateProc</a>, where the add-on can create the dialog items themselves and attach an observer to the tabpage. After closing the settings dialog all panels are destroyed; the <a class="el" href="group___add_on_integration.html#ga5f18cfb0fd48427380b832d480476097">APIPanelDestroyProc</a> is called to detach the observer and destruct the tabpage object.</p>
159+
<p>In case of info box panels the create-destroy events happen when the info box switches to and from the corresponding toolbox mode.</p>
160+
<p>You can get more experience regarding this topic by studying the **_Panel_Test_** example add-on. </p>
161+
</div></div><!-- contents -->
162+
</div><!-- PageDoc -->
163+
</div><!-- doc-content -->
164+
</body>
165+
</html>

docs/_dev_kit.html

Lines changed: 175 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,175 @@
1+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2+
<html xmlns="http://www.w3.org/1999/xhtml">
3+
<head>
4+
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5+
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
6+
<meta name="generator" content="Doxygen 1.12.0"/>
7+
<meta name="viewport" content="width=device-width, initial-scale=1"/>
8+
<!-- BEGIN opengraph metadata -->
9+
<meta property="og:title" content="Archicad C++ API" />
10+
<meta property="og:image" content="logo.svg" />
11+
<meta property="og:description" content="Archicad Development Kit Documentation, best practices, example codes and information hub." />
12+
<meta property="og:url" content="https://archicadapi.graphisoft.com/documentation/" />
13+
<!-- END opengraph metadata -->
14+
<!-- BEGIN twitter metadata -->
15+
<meta name="twitter:image:src" content="logo.svg" />
16+
<meta name="twitter:title" content="Archicad C++ API" />
17+
<meta name="twitter:description" content="Archicad Development Kit Documentation, best practices, example codes and information hub." />
18+
<!-- END twitter metadata -->
19+
<title>Archicad 29 C++ API: General API Development Kit 29</title>
20+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
21+
<script type="text/javascript" src="jquery.js"></script>
22+
<script type="text/javascript" src="dynsections.js"></script>
23+
<script type="text/javascript" src="doxygen-awesome-darkmode-toggle.js"></script>
24+
<script type="text/javascript" src="doxygen-awesome-fragment-copy-button.js"></script>
25+
<script type="text/javascript" src="doxygen-awesome-paragraph-link.js"></script>
26+
<script type="text/javascript" src="doxygen-awesome-interactive-toc.js"></script>
27+
<script type="text/javascript" src="doxygen-awesome-tabs.js"></script>
28+
<script type="text/javascript">
29+
DoxygenAwesomeFragmentCopyButton.init()
30+
DoxygenAwesomeDarkModeToggle.init()
31+
DoxygenAwesomeParagraphLink.init()
32+
DoxygenAwesomeInteractiveToc.init()
33+
DoxygenAwesomeTabs.init()
34+
</script>
35+
<link href="navtree.css" rel="stylesheet" type="text/css"/>
36+
<script type="text/javascript" src="navtreedata.js"></script>
37+
<script type="text/javascript" src="navtree.js"></script>
38+
<script type="text/javascript" src="resize.js"></script>
39+
<script type="text/javascript" src="cookie.js"></script>
40+
<link href="search/search.css" rel="stylesheet" type="text/css"/>
41+
<script type="text/javascript" src="search/searchdata.js"></script>
42+
<script type="text/javascript" src="search/search.js"></script>
43+
<link href="doxygen.css" rel="stylesheet" type="text/css" />
44+
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
45+
<link href="doxygen-awesome-sidebar-only.css" rel="stylesheet" type="text/css"/>
46+
<link href="doxygen-awesome-sidebar-only-darkmode-toggle.css" rel="stylesheet" type="text/css"/>
47+
<link href="custom.css" rel="stylesheet" type="text/css"/>
48+
<link href="https://fonts.cdnfonts.com/css/proxima-nova-2" rel="stylesheet">
49+
<link rel="icon" href="logo.svg" />
50+
</head>
51+
<body>
52+
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
53+
<div id="titlearea">
54+
<table cellspacing="0" cellpadding="0">
55+
<tbody>
56+
<tr style="height: 56px;">
57+
<td id="projectlogo"><img alt="Logo" src="logo.svg"/></td>
58+
<td id="projectalign" style="padding-left: 0.5em;">
59+
<div id="projectname">Archicad 29 C++ API
60+
</div>
61+
</td>
62+
</tr>
63+
</tbody>
64+
</table>
65+
</div>
66+
<!-- end header part -->
67+
<!-- Generated by Doxygen 1.12.0 -->
68+
<script type="text/javascript">
69+
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
70+
var searchBox = new SearchBox("searchBox", "search/",'.html');
71+
/* @license-end */
72+
</script>
73+
<script type="text/javascript">
74+
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
75+
$(function() { codefold.init(0); });
76+
/* @license-end */
77+
</script>
78+
<script type="text/javascript" src="menudata.js"></script>
79+
<script type="text/javascript" src="menu.js"></script>
80+
<script type="text/javascript">
81+
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
82+
$(function() {
83+
initMenu('',true,false,'search.php','Search',true);
84+
$(function() { init_search(); });
85+
});
86+
/* @license-end */
87+
</script>
88+
<div id="main-nav"></div>
89+
</div><!-- top -->
90+
<div id="side-nav" class="ui-resizable side-nav-resizable">
91+
<div id="nav-tree">
92+
<div id="nav-tree-contents">
93+
<div id="nav-sync" class="sync"></div>
94+
</div>
95+
</div>
96+
<div id="splitbar" style="-moz-user-select:none;"
97+
class="ui-resizable-handle">
98+
</div>
99+
</div>
100+
<script type="text/javascript">
101+
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
102+
$(function(){initNavTree('_dev_kit.html',''); initResizable(true); });
103+
/* @license-end */
104+
</script>
105+
<div id="doc-content">
106+
<!-- window showing the filter options -->
107+
<div id="MSearchSelectWindow"
108+
onmouseover="return searchBox.OnSearchSelectShow()"
109+
onmouseout="return searchBox.OnSearchSelectHide()"
110+
onkeydown="return searchBox.OnSearchSelectKey(event)">
111+
</div>
112+
113+
<!-- iframe showing the search results (closed by default) -->
114+
<div id="MSearchResultsWindow">
115+
<div id="MSearchResults">
116+
<div class="SRPage">
117+
<div id="SRIndex">
118+
<div id="SRResults"></div>
119+
<div class="SRStatus" id="Loading">Loading...</div>
120+
<div class="SRStatus" id="Searching">Searching...</div>
121+
<div class="SRStatus" id="NoMatches">No Matches</div>
122+
</div>
123+
</div>
124+
</div>
125+
</div>
126+
127+
<div><div class="header">
128+
<div class="headertitle"><div class="title">General API Development Kit 29</div></div>
129+
</div><!--header-->
130+
<div class="contents">
131+
<div class="textblock"><p>The General API Development Kit enables software developers to extend the functionality of Archicad.</p>
132+
<p>The following documents give a short overview of the possibilities and requirements.</p>
133+
<ul>
134+
<li><a class="el" href="apiwhitepaper.html">API White Paper</a></li>
135+
<li><a class="el" href="_license_agreement.html">License Agreement</a></li>
136+
<li><a class="el" href="_registration.html">Registration</a></li>
137+
</ul>
138+
<p>Add-ons built with this API version are compatible with Archicad 29. You can check what improvements and corrections have been made to the former API versions.</p>
139+
<ul>
140+
<li><a class="el" href="newfeatures.html">New API Features in Archicad 29</a></li>
141+
<li><a class="el" href="apicompatibility_1.html">Compatibiliy</a></li>
142+
</ul>
143+
<p>Note, that because of the interface changes significantly release by release, we do not ensure neither interface nor binary compatibility with previous versions. So add-ons compiled with older DevKits cannot be loaded in the Archicad 29.</p>
144+
<p>The following documents contain detailed information on different aspects of API development. Please consider these rules and recommendations in order to develop solutions conforming to Archicad.</p>
145+
<ul>
146+
<li><a class="el" href="index.html">Getting started guide</a></li>
147+
<li><a class="el" href="group___database.html">Database Overview</a></li>
148+
</ul>
149+
<p>Reference to the Application Programming Interface</p>
150+
<ul>
151+
<li> <a href="modules.html">Module Reference</a></li>
152+
<li> <a href="annotated.html">Class and Struct Reference</a></li>
153+
<li><a class="el" href="_error_codes.html">Error Codes</a></li>
154+
</ul>
155+
<hr />
156+
<h1><a class="anchor" id="autotoc_md3"></a>
157+
System Requirements</h1>
158+
<p>This Developer Kit contains all the necessary support to develop your add-on either on Windows or macOS. This development kit also fully supports cross platform development.</p>
159+
<p><b>Recommended hardware and operating systems</b></p>
160+
<p>You can find details on <a href="http://helpcenter.graphisoft.com/?p=25883">Help Center</a> .</p>
161+
<p><b>Build environments</b></p>
162+
<ul>
163+
<li>Windows: Microsoft Visual C++ 2022 Build Tools (v143) installed. Only the 64-bit architecture is supported.</li>
164+
<li>macOS: Xcode 12.5+.</li>
165+
</ul>
166+
<p>Visit the <a href="http://www.graphisoft.com">Graphisoft website</a> for the address of your local distributor. Product availability information, technical details, upgrades etc. provided at <a href="http://archicadapi.graphisoft.com/">Archicad API developer site</a>.</p>
167+
<p>For more information on third party possibilities please contact:</p>
168+
<p><a href="https://community.graphisoft.com/t5/Developer-forum/bd-p/forum_develop"><b>GRAPHISOFT SE</b></a></p>
169+
<hr />
170+
<p>Version 29 Copyright © Graphisoft 2025 </p>
171+
</div></div><!-- contents -->
172+
</div><!-- PageDoc -->
173+
</div><!-- doc-content -->
174+
</body>
175+
</html>

0 commit comments

Comments
 (0)