<?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 show/hide an element using C++ in Archicad C++ API</title>
    <link>https://community.graphisoft.com/t5/Archicad-C-API/How-to-show-hide-an-element-using-C/m-p/277468#M5619</link>
    <description>&lt;BLOCKQUOTE&gt;Tibor wrote:&lt;BR /&gt; Did you used ACAPI_CallUndoableCommand? &lt;/BLOCKQUOTE&gt;
Probably worth mentioning that &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; is only applicable to AC19. For earlier version you want to bound the call 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_OpenUndoableSession&lt;E&gt;&lt;/E&gt; and &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_CloseUndoableSession&lt;E&gt;&lt;/E&gt;.</description>
    <pubDate>Fri, 19 Jun 2015 17:39:54 GMT</pubDate>
    <dc:creator>Ralph Wessel</dc:creator>
    <dc:date>2015-06-19T17:39:54Z</dc:date>
    <item>
      <title>How to show/hide an element using C++</title>
      <link>https://community.graphisoft.com/t5/Archicad-C-API/How-to-show-hide-an-element-using-C/m-p/277464#M5615</link>
      <description>&lt;DIV class="actalk-migrated-content"&gt;Hi&lt;BR /&gt;&lt;BR /&gt;I want to show/hide an element using C++ code.&lt;BR /&gt;Is there a way to do that.&lt;BR /&gt;&lt;BR /&gt;Thanks in advance.&lt;/DIV&gt;</description>
      <pubDate>Thu, 13 Jul 2023 14:18:12 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Archicad-C-API/How-to-show-hide-an-element-using-C/m-p/277464#M5615</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2023-07-13T14:18:12Z</dc:date>
    </item>
    <item>
      <title>Re: How to show/hide an element using C++</title>
      <link>https://community.graphisoft.com/t5/Archicad-C-API/How-to-show-hide-an-element-using-C/m-p/277465#M5616</link>
      <description>Hi, &lt;BR /&gt;
 &lt;BR /&gt;
You can hide an element by moving that to a hidden layer. &lt;BR /&gt;
Here is an example code for this: 
&lt;PRE&gt;short		Create_HidddenLayer (void); 
 
// ----------------------------------------------------------------------------- 
// Hides an element with moving to a hidden layer 
// ----------------------------------------------------------------------------- 
 
GSErrCode	Hide_Element (const API_Guid&amp;amp; guid) 
{ 
	API_Element		element, mask; 
	GSErrCode		err = NoError; 
 
	BNZeroMemory (&amp;amp;element, sizeof (API_Element)); 
	element.header.guid = guid; 
 
	err = ACAPI_Element_Get (&amp;amp;element); 
	if (err != NoError) { 
		WriteReport_Err ("ACAPI_Element_Get failed.", err); 
		return err; 
	} 
 
	ACAPI_ELEMENT_MASK_CLEAR (mask); 
	ACAPI_ELEMENT_MASK_SET (mask, API_Elem_Head, layer); 
 
	element.header.layer = Create_HidddenLayer (); 
	if (element.header.layer == -1) 
		return Error; 
 
	return ACAPI_Element_Change (&amp;amp;element, &amp;amp;mask, NULL, 0, true); 
} 
 
// ----------------------------------------------------------------------------- 
//  Create a hidden layer 
// ----------------------------------------------------------------------------- 
 
short		Create_HidddenLayer (void) 
{ 
	API_Attribute	attrib; 
	GSErrCode		err = NoError; 
 
	BNZeroMemory (&amp;amp;attrib, sizeof (API_Attribute)); 
	attrib.header.typeID = API_LayerID; 
	attrib.header.flags  = APILay_Hidden; 
	strcpy (attrib.header.name, "Example_HiddenLayer"); 
 
	err = ACAPI_Attribute_Create (&amp;amp;attrib, NULL); 
	if (err == APIERR_ATTREXIST) { 
		WriteReport_Alert ("The layer already exists."); 
		return attrib.header.index; 
	} 
	if (err != NoError) { 
		WriteReport_Err ("Unable to create layer.", err); 
		return -1; 
	} 
 
	return attrib.header.index; 
}&lt;/PRE&gt; &lt;BR /&gt;
Showing an element could be done the same way (move back to original layer for example). &lt;BR /&gt;
I hope this is useful for you. &lt;BR /&gt;
 &lt;BR /&gt;
Regards, &lt;BR /&gt;
Tibor</description>
      <pubDate>Thu, 18 Jun 2015 08:54:05 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Archicad-C-API/How-to-show-hide-an-element-using-C/m-p/277465#M5616</guid>
      <dc:creator>Tibor Lorantfy</dc:creator>
      <dc:date>2015-06-18T08:54:05Z</dc:date>
    </item>
    <item>
      <title>Re: How to show/hide an element using C++</title>
      <link>https://community.graphisoft.com/t5/Archicad-C-API/How-to-show-hide-an-element-using-C/m-p/277466#M5617</link>
      <description>&lt;BLOCKQUOTE&gt;Tibor wrote:&lt;BR /&gt;Hi, &lt;BR /&gt;
 &lt;BR /&gt;
You can hide an element by moving that to a hidden layer. &lt;BR /&gt;
Here is an example code for this: 
&lt;PRE&gt;short		Create_HidddenLayer (void); 
 
// ----------------------------------------------------------------------------- 
// Hides an element with moving to a hidden layer 
// ----------------------------------------------------------------------------- 
 
GSErrCode	Hide_Element (const API_Guid&amp;amp; guid) 
{ 
	API_Element		element, mask; 
	GSErrCode		err = NoError; 
 
	BNZeroMemory (&amp;amp;element, sizeof (API_Element)); 
	element.header.guid = guid; 
 
	err = ACAPI_Element_Get (&amp;amp;element); 
	if (err != NoError) { 
		WriteReport_Err ("ACAPI_Element_Get failed.", err); 
		return err; 
	} 
 
	ACAPI_ELEMENT_MASK_CLEAR (mask); 
	ACAPI_ELEMENT_MASK_SET (mask, API_Elem_Head, layer); 
 
	element.header.layer = Create_HidddenLayer (); 
	if (element.header.layer == -1) 
		return Error; 
 
	return ACAPI_Element_Change (&amp;amp;element, &amp;amp;mask, NULL, 0, true); 
} 
 
// ----------------------------------------------------------------------------- 
//  Create a hidden layer 
// ----------------------------------------------------------------------------- 
 
short		Create_HidddenLayer (void) 
{ 
	API_Attribute	attrib; 
	GSErrCode		err = NoError; 
 
	BNZeroMemory (&amp;amp;attrib, sizeof (API_Attribute)); 
	attrib.header.typeID = API_LayerID; 
	attrib.header.flags  = APILay_Hidden; 
	strcpy (attrib.header.name, "Example_HiddenLayer"); 
 
	err = ACAPI_Attribute_Create (&amp;amp;attrib, NULL); 
	if (err == APIERR_ATTREXIST) { 
		WriteReport_Alert ("The layer already exists."); 
		return attrib.header.index; 
	} 
	if (err != NoError) { 
		WriteReport_Err ("Unable to create layer.", err); 
		return -1; 
	} 
 
	return attrib.header.index; 
}&lt;/PRE&gt; &lt;BR /&gt;
Showing an element could be done the same way (move back to original layer for example). &lt;BR /&gt;
I hope this is useful for you. &lt;BR /&gt;
 &lt;BR /&gt;
Regards, &lt;BR /&gt;
Tibor&lt;/BLOCKQUOTE&gt;

&lt;BR /&gt;
Thank you for the help.&lt;BR /&gt;
It creates hidden layer and code goes without any errors but the element does not disappear.&lt;BR /&gt;
&lt;BR /&gt;
I'm calling the function by the following way&lt;BR /&gt;

&lt;PRE&gt;API_Guid apiGuid; 
	APIGuid2GSGuid (apiGuid).ConvertFromString("9C046988-FF12-406C-AFFF-DCDB0FAD4986");

	Hide_Element(apiGuid);
&lt;/PRE&gt;

Please advice.</description>
      <pubDate>Fri, 19 Jun 2015 07:42:48 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Archicad-C-API/How-to-show-hide-an-element-using-C/m-p/277466#M5617</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2015-06-19T07:42:48Z</dc:date>
    </item>
    <item>
      <title>Re: How to show/hide an element using C++</title>
      <link>https://community.graphisoft.com/t5/Archicad-C-API/How-to-show-hide-an-element-using-C/m-p/277467#M5618</link>
      <description>&lt;BLOCKQUOTE&gt;ggiloyan wrote:&lt;BR /&gt;Thank you for the help. &lt;BR /&gt;
It creates hidden layer and code goes without any errors but the element does not disappear. &lt;BR /&gt;
 &lt;BR /&gt;
I'm calling the function by the following way &lt;BR /&gt;
 
&lt;PRE&gt;API_Guid apiGuid;  
	APIGuid2GSGuid (apiGuid).ConvertFromString("9C046988-FF12-406C-AFFF-DCDB0FAD4986"); 
 
	Hide_Element(apiGuid); 
&lt;/PRE&gt; &lt;BR /&gt;
 &lt;BR /&gt;
Please advice.&lt;/BLOCKQUOTE&gt; &lt;BR /&gt;
Did you used ACAPI_CallUndoableCommand? &lt;BR /&gt;
Are you sure that this Guid is valid? &lt;BR /&gt;
 &lt;BR /&gt;
I tested this way and it worked for me: 
&lt;PRE&gt;// -----------------------------------------------------------------------------  
//  Hides clicked element 
// -----------------------------------------------------------------------------  
 
GSErrCode	Hide_Clicked_Element (void) 
{ 
	API_Guid	guid; 
 
	if (!ClickAnElem ("Click an elem to hide", API_ZombieElemID, NULL, NULL, &amp;amp;guid)) { 
		WriteReport_Alert ("No element was clicked"); 
		return Error; 
	} 
 
	return ACAPI_CallUndoableCommand ("Hide element", 
		[&amp;amp;] () -&amp;gt; GSErrCode { 
			return Hide_Element (guid); 
		}); 
}&lt;/PRE&gt; &lt;BR /&gt;
ClickAnElem can be found in APICommon.c (so need to include APICommon.h).</description>
      <pubDate>Fri, 19 Jun 2015 08:44:34 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Archicad-C-API/How-to-show-hide-an-element-using-C/m-p/277467#M5618</guid>
      <dc:creator>Tibor Lorantfy</dc:creator>
      <dc:date>2015-06-19T08:44:34Z</dc:date>
    </item>
    <item>
      <title>Re: How to show/hide an element using C++</title>
      <link>https://community.graphisoft.com/t5/Archicad-C-API/How-to-show-hide-an-element-using-C/m-p/277468#M5619</link>
      <description>&lt;BLOCKQUOTE&gt;Tibor wrote:&lt;BR /&gt; Did you used ACAPI_CallUndoableCommand? &lt;/BLOCKQUOTE&gt;
Probably worth mentioning that &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; is only applicable to AC19. For earlier version you want to bound the call 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_OpenUndoableSession&lt;E&gt;&lt;/E&gt; and &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_CloseUndoableSession&lt;E&gt;&lt;/E&gt;.</description>
      <pubDate>Fri, 19 Jun 2015 17:39:54 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Archicad-C-API/How-to-show-hide-an-element-using-C/m-p/277468#M5619</guid>
      <dc:creator>Ralph Wessel</dc:creator>
      <dc:date>2015-06-19T17:39:54Z</dc:date>
    </item>
  </channel>
</rss>

