<?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: I always APIERR_REFUSEDCMD error. in Archicad C++ API</title>
    <link>https://community.graphisoft.com/t5/Archicad-C-API/I-always-APIERR-REFUSEDCMD-error/m-p/257668#M2948</link>
    <description>&lt;BLOCKQUOTE&gt;Ralph wrote:&lt;BR /&gt;
Every database change has to be enclosed in an undoable session. Are you calling this function within that context? If not, take a look at &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_CallUndoableCommand&lt;E&gt;&lt;/E&gt;.
&lt;/BLOCKQUOTE&gt;

Thank you, Ralph.&lt;BR /&gt;
My code is works well.&lt;BR /&gt;

&lt;PRE&gt;&lt;I&gt;
&lt;/I&gt;GSErrCode __ACENV_CALL	CommandHandler (const API_MenuParams * /*params*/)
{
	GSErrCode	err;
	char		errMsg [50];

	API_Element			element;
	API_ElementMemo		memo;
	API_LibPart			libPart;
	API_GetPointType	pointInfo;

	double	aParam;
	double	bParam;
	Int32	addParNum;


	// Load a object
	BNZeroMemory (&amp;amp;libPart, sizeof (libPart));
	strcpy (libPart.ownUnID, "{CE0BB097-2FE3-4399-B6DA-80681BD99C60}-{00000000-0000-0000-0000-000000000000}");
	err = ACAPI_LibPart_Search (&amp;amp;libPart, false);
	if (libPart.location != NULL)
		delete libPart.location;

	err = ACAPI_LibPart_Get (&amp;amp;libPart);
	if (err != NoError) {
		sprintf (errMsg, "ACAPI_LibPart_Get: %d", err);
		ACAPI_WriteReport (errMsg, true);
		return err;
	}


	// Click a point
	BNZeroMemory (&amp;amp;pointInfo, sizeof (API_GetPointType));
	CHTruncate ("Click a point", pointInfo.prompt, sizeof (pointInfo.prompt));
	pointInfo.changeFilter = false;
	pointInfo.changePlane  = false;

	err = ACAPI_Interface (APIIo_GetPointID, &amp;amp;pointInfo, NULL);
	if (err != NoError) {
		sprintf (errMsg, "ACAPI_Interface: %d", err);
		ACAPI_WriteReport (errMsg, true);
		return err;
	}


	// Placing a object
	BNZeroMemory (&amp;amp;element, sizeof (API_Element));
	BNZeroMemory (&amp;amp;memo, sizeof (API_ElementMemo));

	element.header.typeID = API_ObjectID;
	element.header.guid = GSGuid2APIGuid (GS::Guid ("{CE0BB097-2FE3-4399-B6DA-80681BD99C60}"));
	
	err = ACAPI_Element_GetDefaults (&amp;amp;element, &amp;amp;memo);
	if (err != NoError) {
		sprintf (errMsg, "ACAPI_Element_GetDefaults: %d", err);
		ACAPI_WriteReport (errMsg, true);
		return err;
	}

	err = ACAPI_LibPart_GetParams (libPart.index, &amp;amp;aParam, &amp;amp;bParam, &amp;amp;addParNum, &amp;amp;memo.params);
	if (err != NoError) {
		sprintf (errMsg, "ACAPI_LibPart_GetParams: %d", err);
		ACAPI_WriteReport (errMsg, true);
		return err;
	}
	//element.object.head.guid = element.header.guid;
	element.object.libInd = libPart.index;
	element.object.pos.x = 0;	// pointInfo.pos.x;
	element.object.pos.y = 0;	// pointInfo.pos.y;
	element.object.level = 0;	// pointInfo.pos.z;
	element.object.xRatio = aParam;
	element.object.yRatio = bParam;

	err = ACAPI_CallUndoableCommand ("Create text",
        [&amp;amp;] () -&amp;gt; GSErrCode {
            return ACAPI_Element_Create (&amp;amp;element, &amp;amp;memo);
        });
	if (err != NoError) {
		sprintf (errMsg, "ACAPI_Element_Create: %d", err);
		ACAPI_WriteReport (errMsg, true);
		return err;
	}

	ACAPI_DisposeElemMemoHdls (&amp;amp;memo);

	return NoError;
}
&lt;/PRE&gt;</description>
    <pubDate>Mon, 06 Jul 2020 12:20:32 GMT</pubDate>
    <dc:creator>Soonbum Jeong</dc:creator>
    <dc:date>2020-07-06T12:20:32Z</dc:date>
    <item>
      <title>I always APIERR_REFUSEDCMD error.</title>
      <link>https://community.graphisoft.com/t5/Archicad-C-API/I-always-APIERR-REFUSEDCMD-error/m-p/257665#M2945</link>
      <description>&lt;DIV class="actalk-migrated-content"&gt;Hello, good developers.&lt;BR /&gt;I have a question.&lt;BR /&gt;I'm a newbie.&lt;BR /&gt;&lt;BR /&gt;I'm practising with example source and other person's code.&lt;BR /&gt;Even simple codes, it returns APIERR_REFUSEDCMD error.&lt;BR /&gt;After ACAPI_Element_Create, any object did not appear on the screen.&lt;BR /&gt;&lt;BR /&gt;&lt;STRONG&gt;My goal is placing Library part object with ACAPI_Element_Create function.&lt;/STRONG&gt;&lt;BR /&gt;&lt;BR /&gt;Could you advice me?&lt;BR /&gt;&lt;BR /&gt;This is my first code.
&lt;PRE&gt;&lt;I&gt;
&lt;/I&gt;GSErrCode __ACENV_CALL	CommandHandler (const API_MenuParams * /*params*/)
{
	GSErrCode	err;
	char		errMsg [50];

	API_Element			element;
	API_ElementMemo		memo;
	API_LibPart			libPart;
	API_GetPointType	pointInfo;

	double	aParam;
	double	bParam;
	Int32	addParNum;


	// Load a object
	BNZeroMemory (&amp;amp;libPart, sizeof (libPart));
	strcpy (libPart.ownUnID, "{CE0BB097-2FE3-4399-B6DA-80681BD99C60}-{00000000-0000-0000-0000-000000000000}");
	err = ACAPI_LibPart_Search (&amp;amp;libPart, false);
	if (libPart.location != NULL)
		delete libPart.location;

	err = ACAPI_LibPart_Get (&amp;amp;libPart);
	if (err != NoError) {
		sprintf (errMsg, "ACAPI_LibPart_Get: %d", err);
		ACAPI_WriteReport (errMsg, true);
		return err;
	}


	// Click a point
	BNZeroMemory (&amp;amp;pointInfo, sizeof (API_GetPointType));
	CHTruncate ("Click a point", pointInfo.prompt, sizeof (pointInfo.prompt));
	pointInfo.changeFilter = false;
	pointInfo.changePlane  = false;

	err = ACAPI_Interface (APIIo_GetPointID, &amp;amp;pointInfo, NULL);
	if (err != NoError) {
		sprintf (errMsg, "ACAPI_Interface: %d", err);
		ACAPI_WriteReport (errMsg, true);
		return err;
	}


	// Placing a object
	BNZeroMemory (&amp;amp;element, sizeof (API_Element));
	BNZeroMemory (&amp;amp;memo, sizeof (API_ElementMemo));

	element.header.typeID = API_ObjectID;
	element.header.guid = GSGuid2APIGuid (GS::Guid ("{CE0BB097-2FE3-4399-B6DA-80681BD99C60}"));
	
	err = ACAPI_Element_GetDefaults (&amp;amp;element, &amp;amp;memo);
	if (err != NoError) {
		sprintf (errMsg, "ACAPI_Element_GetDefaults: %d", err);
		ACAPI_WriteReport (errMsg, true);
		return err;
	}

	err = ACAPI_LibPart_GetParams (libPart.index, &amp;amp;aParam, &amp;amp;bParam, &amp;amp;addParNum, &amp;amp;memo.params);
	if (err != NoError) {
		sprintf (errMsg, "ACAPI_LibPart_GetParams: %d", err);
		ACAPI_WriteReport (errMsg, true);
		return err;
	}
	//element.object.head.guid = element.header.guid;
	element.object.libInd = libPart.index;
	element.object.pos.x = 0;	// pointInfo.pos.x;
	element.object.pos.y = 0;	// pointInfo.pos.y;
	element.object.level = 0;	// pointInfo.pos.z;
	element.object.xRatio = aParam;
	element.object.yRatio = bParam;

	err = ACAPI_Element_Create (&amp;amp;element, &amp;amp;memo);
	if (err != NoError) {
		sprintf (errMsg, "ACAPI_Element_Create: %d", err);
		ACAPI_WriteReport (errMsg, true);
		return err;
	}

	ACAPI_DisposeElemMemoHdls (&amp;amp;memo);

	return NoError;
}		// CommandHandler ()
&lt;/PRE&gt;
&lt;BR /&gt;This is sample practice code.
&lt;PRE&gt;&lt;I&gt;
&lt;/I&gt;GSErrCode __ACENV_CALL	CommandHandler (const API_MenuParams * /*params*/)
{
	const char      hwText[] = { "This multistyle\nword was created\nby the Element Test example project." };

	API_Element     element;
	API_ElementMemo memo;
	GSErrCode       err = NoError;

	BNZeroMemory (&amp;amp;element, sizeof(API_Element));
	BNZeroMemory (&amp;amp;memo, sizeof(API_ElementMemo));

	element.header.typeID = API_TextID;
	ACAPI_Element_GetDefaults (&amp;amp;element, &amp;amp;memo);

	element.text.charCode = CC_UTF8;
	element.text.loc.x = element.text.loc.y = 2;
	element.text.anchor = APIAnc_LB;
	element.text.multiStyle = true;
	element.text.nonBreaking = false;
	element.text.useEolPos = true;
	element.text.width = 150;
	element.text.charCode = CC_Default;
	memo.textContent = BMhAll (Strlen32 (hwText) + 1);
	if (memo.textContent == NULL)
		return APIERR_MEMFULL;
	strcpy (*memo.textContent, hwText);

	// create the text element 
	err = ACAPI_Element_Create (&amp;amp;element, &amp;amp;memo);

	// clean up
	ACAPI_DisposeElemMemoHdls (&amp;amp;memo);

	return err;
}		// CommandHandler ()
&lt;/PRE&gt;
&lt;/DIV&gt;</description>
      <pubDate>Wed, 15 Sep 2021 09:47:17 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Archicad-C-API/I-always-APIERR-REFUSEDCMD-error/m-p/257665#M2945</guid>
      <dc:creator>Soonbum Jeong</dc:creator>
      <dc:date>2021-09-15T09:47:17Z</dc:date>
    </item>
    <item>
      <title>Re: I always APIERR_REFUSEDCMD error.</title>
      <link>https://community.graphisoft.com/t5/Archicad-C-API/I-always-APIERR-REFUSEDCMD-error/m-p/257666#M2946</link>
      <description>Every database change has to be enclosed in an undoable session. Are you calling this function within that context? If not, take a look at &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_CallUndoableCommand&lt;E&gt;&lt;/E&gt;.</description>
      <pubDate>Mon, 06 Jul 2020 10:18:05 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Archicad-C-API/I-always-APIERR-REFUSEDCMD-error/m-p/257666#M2946</guid>
      <dc:creator>Ralph Wessel</dc:creator>
      <dc:date>2020-07-06T10:18:05Z</dc:date>
    </item>
    <item>
      <title>Re: I always APIERR_REFUSEDCMD error.</title>
      <link>https://community.graphisoft.com/t5/Archicad-C-API/I-always-APIERR-REFUSEDCMD-error/m-p/257667#M2947</link>
      <description>&lt;BLOCKQUOTE&gt;Ralph wrote:&lt;BR /&gt;
Every database change has to be enclosed in an undoable session. Are you calling this function within that context? If not, take a look at &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_CallUndoableCommand&lt;E&gt;&lt;/E&gt;.
&lt;/BLOCKQUOTE&gt;

Thank you, Ralph.&lt;BR /&gt;
I will try it.</description>
      <pubDate>Mon, 06 Jul 2020 12:03:53 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Archicad-C-API/I-always-APIERR-REFUSEDCMD-error/m-p/257667#M2947</guid>
      <dc:creator>Soonbum Jeong</dc:creator>
      <dc:date>2020-07-06T12:03:53Z</dc:date>
    </item>
    <item>
      <title>Re: I always APIERR_REFUSEDCMD error.</title>
      <link>https://community.graphisoft.com/t5/Archicad-C-API/I-always-APIERR-REFUSEDCMD-error/m-p/257668#M2948</link>
      <description>&lt;BLOCKQUOTE&gt;Ralph wrote:&lt;BR /&gt;
Every database change has to be enclosed in an undoable session. Are you calling this function within that context? If not, take a look at &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_CallUndoableCommand&lt;E&gt;&lt;/E&gt;.
&lt;/BLOCKQUOTE&gt;

Thank you, Ralph.&lt;BR /&gt;
My code is works well.&lt;BR /&gt;

&lt;PRE&gt;&lt;I&gt;
&lt;/I&gt;GSErrCode __ACENV_CALL	CommandHandler (const API_MenuParams * /*params*/)
{
	GSErrCode	err;
	char		errMsg [50];

	API_Element			element;
	API_ElementMemo		memo;
	API_LibPart			libPart;
	API_GetPointType	pointInfo;

	double	aParam;
	double	bParam;
	Int32	addParNum;


	// Load a object
	BNZeroMemory (&amp;amp;libPart, sizeof (libPart));
	strcpy (libPart.ownUnID, "{CE0BB097-2FE3-4399-B6DA-80681BD99C60}-{00000000-0000-0000-0000-000000000000}");
	err = ACAPI_LibPart_Search (&amp;amp;libPart, false);
	if (libPart.location != NULL)
		delete libPart.location;

	err = ACAPI_LibPart_Get (&amp;amp;libPart);
	if (err != NoError) {
		sprintf (errMsg, "ACAPI_LibPart_Get: %d", err);
		ACAPI_WriteReport (errMsg, true);
		return err;
	}


	// Click a point
	BNZeroMemory (&amp;amp;pointInfo, sizeof (API_GetPointType));
	CHTruncate ("Click a point", pointInfo.prompt, sizeof (pointInfo.prompt));
	pointInfo.changeFilter = false;
	pointInfo.changePlane  = false;

	err = ACAPI_Interface (APIIo_GetPointID, &amp;amp;pointInfo, NULL);
	if (err != NoError) {
		sprintf (errMsg, "ACAPI_Interface: %d", err);
		ACAPI_WriteReport (errMsg, true);
		return err;
	}


	// Placing a object
	BNZeroMemory (&amp;amp;element, sizeof (API_Element));
	BNZeroMemory (&amp;amp;memo, sizeof (API_ElementMemo));

	element.header.typeID = API_ObjectID;
	element.header.guid = GSGuid2APIGuid (GS::Guid ("{CE0BB097-2FE3-4399-B6DA-80681BD99C60}"));
	
	err = ACAPI_Element_GetDefaults (&amp;amp;element, &amp;amp;memo);
	if (err != NoError) {
		sprintf (errMsg, "ACAPI_Element_GetDefaults: %d", err);
		ACAPI_WriteReport (errMsg, true);
		return err;
	}

	err = ACAPI_LibPart_GetParams (libPart.index, &amp;amp;aParam, &amp;amp;bParam, &amp;amp;addParNum, &amp;amp;memo.params);
	if (err != NoError) {
		sprintf (errMsg, "ACAPI_LibPart_GetParams: %d", err);
		ACAPI_WriteReport (errMsg, true);
		return err;
	}
	//element.object.head.guid = element.header.guid;
	element.object.libInd = libPart.index;
	element.object.pos.x = 0;	// pointInfo.pos.x;
	element.object.pos.y = 0;	// pointInfo.pos.y;
	element.object.level = 0;	// pointInfo.pos.z;
	element.object.xRatio = aParam;
	element.object.yRatio = bParam;

	err = ACAPI_CallUndoableCommand ("Create text",
        [&amp;amp;] () -&amp;gt; GSErrCode {
            return ACAPI_Element_Create (&amp;amp;element, &amp;amp;memo);
        });
	if (err != NoError) {
		sprintf (errMsg, "ACAPI_Element_Create: %d", err);
		ACAPI_WriteReport (errMsg, true);
		return err;
	}

	ACAPI_DisposeElemMemoHdls (&amp;amp;memo);

	return NoError;
}
&lt;/PRE&gt;</description>
      <pubDate>Mon, 06 Jul 2020 12:20:32 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Archicad-C-API/I-always-APIERR-REFUSEDCMD-error/m-p/257668#M2948</guid>
      <dc:creator>Soonbum Jeong</dc:creator>
      <dc:date>2020-07-06T12:20:32Z</dc:date>
    </item>
  </channel>
</rss>

