<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: How to use ChangeDefaultsExt to MyDoor Object in Archicad C++ API</title>
    <link>https://community.graphisoft.com/t5/Archicad-C-API/How-to-use-ChangeDefaultsExt-to-MyDoor-Object/m-p/251173#M5485</link>
    <description>Thanks to everyone   &lt;IMG src="https://community.graphisoft.com/legacyfs/online/emojis/icon_biggrin.gif" style="display : inline;" /&gt;  &lt;IMG src="https://community.graphisoft.com/legacyfs/online/emojis/icon_biggrin.gif" style="display : inline;" /&gt;  &lt;IMG src="https://community.graphisoft.com/legacyfs/online/emojis/icon_biggrin.gif" style="display : inline;" /&gt;  &lt;IMG src="https://community.graphisoft.com/legacyfs/online/emojis/icon_biggrin.gif" style="display : inline;" /&gt;  &lt;IMG src="https://community.graphisoft.com/legacyfs/online/emojis/icon_biggrin.gif" style="display : inline;" /&gt;</description>
    <pubDate>Wed, 11 Mar 2015 08:31:28 GMT</pubDate>
    <dc:creator>Anonymous</dc:creator>
    <dc:date>2015-03-11T08:31:28Z</dc:date>
    <item>
      <title>How to use ChangeDefaultsExt to MyDoor Object</title>
      <link>https://community.graphisoft.com/t5/Archicad-C-API/How-to-use-ChangeDefaultsExt-to-MyDoor-Object/m-p/251169#M5481</link>
      <description>&lt;DIV class="actalk-migrated-content"&gt;I would like to ChangeDefaults Door and Window(Change Object). &lt;BR /&gt;Ex. &lt;BR /&gt;- I have 2 door object [MyDoor1.gsm , MyDoor2.gsm].&lt;BR /&gt;- And "MyDoor1" is Defaults object then i would like change to "MyDoor2" object.&lt;/DIV&gt;</description>
      <pubDate>Tue, 01 Aug 2023 11:34:29 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Archicad-C-API/How-to-use-ChangeDefaultsExt-to-MyDoor-Object/m-p/251169#M5481</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2023-08-01T11:34:29Z</dc:date>
    </item>
    <item>
      <title>Re: How to use ChangeDefaultsExt to MyDoor Object</title>
      <link>https://community.graphisoft.com/t5/Archicad-C-API/How-to-use-ChangeDefaultsExt-to-MyDoor-Object/m-p/251170#M5482</link>
      <description>&lt;BLOCKQUOTE&gt;Traro wrote:&lt;BR /&gt;I would like to ChangeDefaults Door and Window(Change Object). &lt;BR /&gt;
Ex. &lt;BR /&gt;
- I have 2 door object  [MyDoor1.gsm , MyDoor2.gsm].&lt;BR /&gt;
- And  "MyDoor1" is Defaults object then i would like change to "MyDoor2" object.&lt;/BLOCKQUOTE&gt;

Traro,&lt;BR /&gt;
&lt;BR /&gt;
If i understand you question properly, you can alt-click on an existing object in the floorplan to make that the default object when a new instance is placed.</description>
      <pubDate>Thu, 05 Mar 2015 23:23:08 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Archicad-C-API/How-to-use-ChangeDefaultsExt-to-MyDoor-Object/m-p/251170#M5482</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2015-03-05T23:23:08Z</dc:date>
    </item>
    <item>
      <title>Re: How to use ChangeDefaultsExt to MyDoor Object</title>
      <link>https://community.graphisoft.com/t5/Archicad-C-API/How-to-use-ChangeDefaultsExt-to-MyDoor-Object/m-p/251171#M5483</link>
      <description>&lt;BLOCKQUOTE&gt;Traro wrote:&lt;BR /&gt;I would like to ChangeDefaults Door and Window(Change Object). &lt;BR /&gt;
Ex. &lt;BR /&gt;
- I have 2 door object  [MyDoor1.gsm , MyDoor2.gsm].&lt;BR /&gt;
- And  "MyDoor1" is Defaults object then i would like change to "MyDoor2" object.&lt;/BLOCKQUOTE&gt;
I suggest first getting the object defaults with &lt;I&gt;&lt;/I&gt;&lt;S&gt;&lt;I&gt;&lt;I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/S&gt;ACAPI_Element_GetDefaults&lt;E&gt;&lt;/E&gt;. The critical information required for setting the correct library part is the &lt;I&gt;&lt;/I&gt;&lt;S&gt;&lt;I&gt;&lt;I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/S&gt;libInd&lt;E&gt;&lt;/E&gt; value in the &lt;I&gt;&lt;/I&gt;&lt;S&gt;&lt;I&gt;&lt;I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/S&gt;API_ObjectType&lt;E&gt;&lt;/E&gt; structure. This is a temporary index to the object in the loaded libraries. You can find this using &lt;I&gt;&lt;/I&gt;&lt;S&gt;&lt;I&gt;&lt;I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/S&gt;ACAPI_LibPart_Search&lt;E&gt;&lt;/E&gt; with the name of the target object.&lt;BR /&gt;
&lt;BR /&gt;
I can't recollect whether it's essential to get the default parameters for this object to set in the tool defaults, but you can get this information using &lt;I&gt;&lt;/I&gt;&lt;S&gt;&lt;I&gt;&lt;I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/S&gt;ACAPI_LibPart_GetParams&lt;E&gt;&lt;/E&gt; (parameters and default size).</description>
      <pubDate>Fri, 06 Mar 2015 11:00:21 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Archicad-C-API/How-to-use-ChangeDefaultsExt-to-MyDoor-Object/m-p/251171#M5483</guid>
      <dc:creator>Ralph Wessel</dc:creator>
      <dc:date>2015-03-06T11:00:21Z</dc:date>
    </item>
    <item>
      <title>Re: How to use ChangeDefaultsExt to MyDoor Object</title>
      <link>https://community.graphisoft.com/t5/Archicad-C-API/How-to-use-ChangeDefaultsExt-to-MyDoor-Object/m-p/251172#M5484</link>
      <description>&lt;BLOCKQUOTE&gt;Ralph wrote:&lt;BR /&gt;&lt;BLOCKQUOTE&gt;Traro wrote:&lt;BR /&gt;I would like to ChangeDefaults Door and Window(Change Object). &lt;BR /&gt;
Ex. &lt;BR /&gt;
- I have 2 door object  [MyDoor1.gsm , MyDoor2.gsm].&lt;BR /&gt;
- And  "MyDoor1" is Defaults object then i would like change to "MyDoor2" object.&lt;/BLOCKQUOTE&gt;
I suggest first getting the object defaults with &lt;I&gt;&lt;/I&gt;&lt;S&gt;&lt;I&gt;&lt;I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/S&gt;ACAPI_Element_GetDefaults&lt;E&gt;&lt;/E&gt;. The critical information required for setting the correct library part is the &lt;I&gt;&lt;/I&gt;&lt;S&gt;&lt;I&gt;&lt;I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/S&gt;libInd&lt;E&gt;&lt;/E&gt; value in the &lt;I&gt;&lt;/I&gt;&lt;S&gt;&lt;I&gt;&lt;I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/S&gt;API_ObjectType&lt;E&gt;&lt;/E&gt; structure. This is a temporary index to the object in the loaded libraries. You can find this using &lt;I&gt;&lt;/I&gt;&lt;S&gt;&lt;I&gt;&lt;I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/S&gt;ACAPI_LibPart_Search&lt;E&gt;&lt;/E&gt; with the name of the target object.&lt;BR /&gt;
&lt;BR /&gt;
I can't recollect whether it's essential to get the default parameters for this object to set in the tool defaults, but you can get this information using &lt;I&gt;&lt;/I&gt;&lt;S&gt;&lt;I&gt;&lt;I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/S&gt;ACAPI_LibPart_GetParams&lt;E&gt;&lt;/E&gt; (parameters and default size).&lt;/BLOCKQUOTE&gt;

I absolutely agree with Ralph Wessel using these methods to change the default object. I wrote a code sample based on these methods,&lt;BR /&gt;
which changes the default door object to "Door with Sidelight on Side 1 19". I hope it will be helpfull:
&lt;PRE&gt;&lt;I&gt;
&lt;/I&gt;	API_LibPart			libDoor;
	API_Element			elementDoor;
	API_ElementMemo		memo;
	GSErrCode			err = NoError;

	// Get defaults for door element
	BNZeroMemory (&amp;amp;elementDoor, sizeof (API_Element));
	elementDoor.header.typeID = API_DoorID;
	err = ACAPI_Element_GetDefaults (&amp;amp;elementDoor, &amp;amp;memo);
	if (err != NoError) {
		WriteReport_Alert ("Cannot get door defaults");
		return;
	}

	// Get a door object from library using its name
	BNZeroMemory (&amp;amp;libDoor, sizeof (libDoor));
	const GS::UniString uName ("Door with Sidelight on Side 1 19");
	GS::ucscpy (libDoor.docu_UName, uName.ToUStr ());

	err = ACAPI_LibPart_Search (&amp;amp;libDoor, false);
	if (err != NoError) {
		WriteReport_Alert ("No libpart found with that name");
		return;
	}
	delete libDoor.location; // don't forget to free location

	// Change libInd of the default door to the new one
	{
		API_Element mask;

		ACAPI_ELEMENT_MASK_CLEAR (mask);
		ACAPI_ELEMENT_MASK_SET (mask, API_DoorType, openingBase.libInd);
		elementDoor.door.openingBase.libInd = libDoor.index;

		err = ACAPI_Element_ChangeDefaults (&amp;amp;elementDoor, &amp;amp;memo, &amp;amp;mask);
		if (err != NoError) {
			WriteReport_Alert ("Cannot change door defaults");
			return;
		}
	}

	// Check whether defaults were updated
	{
		API_Element elementDoor2;

		elementDoor2.header.typeID = API_DoorID;
		err = ACAPI_Element_GetDefaults (&amp;amp;elementDoor2, NULL);
		if (err != NoError) {
			WriteReport_Alert ("Cannot get door defaults");
			return;
		}
		if (elementDoor2.door.openingBase.libInd != libDoor.index) {
			WriteReport_Alert ("Door default settings were not updated");
			return;
		}
	}
&lt;/PRE&gt;

This example changes only the default door object nothing more (e.g. not using default parameters of this door object).&lt;BR /&gt;
&lt;BR /&gt;
Traro,&lt;BR /&gt;
Is this what you searching for?</description>
      <pubDate>Fri, 06 Mar 2015 15:10:21 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Archicad-C-API/How-to-use-ChangeDefaultsExt-to-MyDoor-Object/m-p/251172#M5484</guid>
      <dc:creator>Tamas Zolnai</dc:creator>
      <dc:date>2015-03-06T15:10:21Z</dc:date>
    </item>
    <item>
      <title>Re: How to use ChangeDefaultsExt to MyDoor Object</title>
      <link>https://community.graphisoft.com/t5/Archicad-C-API/How-to-use-ChangeDefaultsExt-to-MyDoor-Object/m-p/251173#M5485</link>
      <description>Thanks to everyone   &lt;IMG src="https://community.graphisoft.com/legacyfs/online/emojis/icon_biggrin.gif" style="display : inline;" /&gt;  &lt;IMG src="https://community.graphisoft.com/legacyfs/online/emojis/icon_biggrin.gif" style="display : inline;" /&gt;  &lt;IMG src="https://community.graphisoft.com/legacyfs/online/emojis/icon_biggrin.gif" style="display : inline;" /&gt;  &lt;IMG src="https://community.graphisoft.com/legacyfs/online/emojis/icon_biggrin.gif" style="display : inline;" /&gt;  &lt;IMG src="https://community.graphisoft.com/legacyfs/online/emojis/icon_biggrin.gif" style="display : inline;" /&gt;</description>
      <pubDate>Wed, 11 Mar 2015 08:31:28 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Archicad-C-API/How-to-use-ChangeDefaultsExt-to-MyDoor-Object/m-p/251173#M5485</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2015-03-11T08:31:28Z</dc:date>
    </item>
    <item>
      <title>Re: How to use ChangeDefaultsExt to MyDoor Object</title>
      <link>https://community.graphisoft.com/t5/Archicad-C-API/How-to-use-ChangeDefaultsExt-to-MyDoor-Object/m-p/251174#M5486</link>
      <description>To load also the default parameters (e.g. marker) of the door object from library,&lt;BR /&gt;
amend the code as the following lines shows ('+' means additions):&lt;BR /&gt;

&lt;PRE&gt;&lt;I&gt;
&lt;/I&gt;...
// Change libInd of the default door to the new one
{
    API_Element mask;

    ACAPI_ELEMENT_MASK_CLEAR (mask);
    ACAPI_ELEMENT_MASK_SET (mask, API_DoorType, openingBase.libInd);
    elementDoor.door.openingBase.libInd = libDoor.index;

+  // Set default params of the new door object
+  {
+     double a, b;
+     Int32 addParNum;
+     API_AddParType  **addPars;
+
+     err = ACAPI_LibPart_GetParams (libDoor.index, &amp;amp;a, &amp;amp;b, &amp;amp;addParNum, &amp;amp;addPars);
+     if (err) {
+        WriteReport_Alert ("Cannot get libpart params");
+        return;
+     }
+     memo.params = addPars;
+  }

    err = ACAPI_Element_ChangeDefaults (&amp;amp;elementDoor, &amp;amp;memo, &amp;amp;mask);
    if (err != NoError) {
       WriteReport_Alert ("Cannot change door defaults");
       return;
    }
+   ACAPI_DisposeElemMemoHdls (&amp;amp;memo);
}
...
&lt;/PRE&gt;</description>
      <pubDate>Fri, 13 Mar 2015 13:58:45 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Archicad-C-API/How-to-use-ChangeDefaultsExt-to-MyDoor-Object/m-p/251174#M5486</guid>
      <dc:creator>Tamas Zolnai</dc:creator>
      <dc:date>2015-03-13T13:58:45Z</dc:date>
    </item>
  </channel>
</rss>

