<?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: API get the Concrete formwork area question? in Archicad C++ API</title>
    <link>https://community.graphisoft.com/t5/Archicad-C-API/API-get-the-Concrete-formwork-area-question/m-p/233468#M4181</link>
    <description>Hi Leilei,&lt;BR /&gt;
&lt;BR /&gt;
ACAPI_Element_GetSurfaceQuantities should return the wanted area if you input the beam as a cover.
&lt;PRE&gt;GS::Array&amp;lt;API_Guid&amp;gt;	elemGuids = { &amp;lt;guid_of_the_column&amp;gt; };
GS::Array&amp;lt;API_Guid&amp;gt;	coverElemGuids = { &amp;lt;guid_of_the_beam&amp;gt; };
GS::Array&amp;lt;API_ElemPartSurfaceQuantity&amp;gt;	elemPartSurfaces;

GSErrCode err = ACAPI_Element_GetSurfaceQuantities (&amp;amp;elemGuids, &amp;amp;coverElemGuids, &amp;amp;elemPartSurfaces);
if (err == NoError) {
	for (const auto&amp;amp; q : elemPartSurfaces) {
		ACAPI_WriteReport ("Visible area without the covered parts is %.2lf", true, q.exposedSurface);
	}
}&lt;/PRE&gt;
In your case the returned elemPartSurfaces array should contain only one API_ElemPartSurfaceQuantity.&lt;BR /&gt;
&lt;BR /&gt;
Regards,&lt;BR /&gt;
Tibor</description>
    <pubDate>Mon, 13 Aug 2018 13:09:56 GMT</pubDate>
    <dc:creator>Tibor Lorantfy</dc:creator>
    <dc:date>2018-08-13T13:09:56Z</dc:date>
    <item>
      <title>API get the Concrete formwork area question?</title>
      <link>https://community.graphisoft.com/t5/Archicad-C-API/API-get-the-Concrete-formwork-area-question/m-p/233467#M4180</link>
      <description>&lt;DIV class="actalk-migrated-content"&gt;Hi !!&lt;BR /&gt;Can someone help me? I am writing a plugin to calculate the surface area of ​​the concrete formwork.There are a few problems here. I don't know how to solve them.For example, the beam and the column intersect only core.I want to calculate the side area of the column minus the area that intersects the beam.&lt;BR /&gt;I can't get the wanted area when I use the ACAPI_Element_GetSurfaceQuantities &lt;BR /&gt;and ACAPI_Element_GetQuantities function.I would like to ask if there is any way to get this area.&lt;BR /&gt;&lt;BR /&gt;Regards,&lt;BR /&gt;Leilei&lt;/DIV&gt;</description>
      <pubDate>Wed, 30 Nov 2022 09:54:07 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Archicad-C-API/API-get-the-Concrete-formwork-area-question/m-p/233467#M4180</guid>
      <dc:creator>leilei</dc:creator>
      <dc:date>2022-11-30T09:54:07Z</dc:date>
    </item>
    <item>
      <title>Re: API get the Concrete formwork area question?</title>
      <link>https://community.graphisoft.com/t5/Archicad-C-API/API-get-the-Concrete-formwork-area-question/m-p/233468#M4181</link>
      <description>Hi Leilei,&lt;BR /&gt;
&lt;BR /&gt;
ACAPI_Element_GetSurfaceQuantities should return the wanted area if you input the beam as a cover.
&lt;PRE&gt;GS::Array&amp;lt;API_Guid&amp;gt;	elemGuids = { &amp;lt;guid_of_the_column&amp;gt; };
GS::Array&amp;lt;API_Guid&amp;gt;	coverElemGuids = { &amp;lt;guid_of_the_beam&amp;gt; };
GS::Array&amp;lt;API_ElemPartSurfaceQuantity&amp;gt;	elemPartSurfaces;

GSErrCode err = ACAPI_Element_GetSurfaceQuantities (&amp;amp;elemGuids, &amp;amp;coverElemGuids, &amp;amp;elemPartSurfaces);
if (err == NoError) {
	for (const auto&amp;amp; q : elemPartSurfaces) {
		ACAPI_WriteReport ("Visible area without the covered parts is %.2lf", true, q.exposedSurface);
	}
}&lt;/PRE&gt;
In your case the returned elemPartSurfaces array should contain only one API_ElemPartSurfaceQuantity.&lt;BR /&gt;
&lt;BR /&gt;
Regards,&lt;BR /&gt;
Tibor</description>
      <pubDate>Mon, 13 Aug 2018 13:09:56 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Archicad-C-API/API-get-the-Concrete-formwork-area-question/m-p/233468#M4181</guid>
      <dc:creator>Tibor Lorantfy</dc:creator>
      <dc:date>2018-08-13T13:09:56Z</dc:date>
    </item>
    <item>
      <title>Re: API get the Concrete formwork area question?</title>
      <link>https://community.graphisoft.com/t5/Archicad-C-API/API-get-the-Concrete-formwork-area-question/m-p/233469#M4182</link>
      <description>&lt;BLOCKQUOTE&gt;Tibor wrote:&lt;BR /&gt;
Hi Leilei,&lt;BR /&gt;
&lt;BR /&gt;
ACAPI_Element_GetSurfaceQuantities should return the wanted area if you input the beam as a cover.
&lt;PRE&gt;GS::Array&amp;lt;API_Guid&amp;gt;	elemGuids = { &amp;lt;guid_of_the_column&amp;gt; };
GS::Array&amp;lt;API_Guid&amp;gt;	coverElemGuids = { &amp;lt;guid_of_the_beam&amp;gt; };
GS::Array&amp;lt;API_ElemPartSurfaceQuantity&amp;gt;	elemPartSurfaces;

GSErrCode err = ACAPI_Element_GetSurfaceQuantities (&amp;amp;elemGuids, &amp;amp;coverElemGuids, &amp;amp;elemPartSurfaces);
if (err == NoError) {
	for (const auto&amp;amp; q : elemPartSurfaces) {
		ACAPI_WriteReport ("Visible area without the covered parts is %.2lf", true, q.exposedSurface);
	}
}&lt;/PRE&gt;
In your case the returned elemPartSurfaces array should contain only one API_ElemPartSurfaceQuantity.&lt;BR /&gt;
&lt;BR /&gt;
Regards,&lt;BR /&gt;
Tibor
&lt;/BLOCKQUOTE&gt;

Hi Tibor,&lt;BR /&gt;
  I used the Do_CalcQuantities function in element_test to test this area. elemGuids is the guid of the column, and coverElemGuids is the guid of the beam, but what I get through this ACAPI_Element_GetSurfaceQuantities function is that the surface area of ​​the entire column does not reduce the intersection area with the beam, I don't Know where I am wrong?&lt;BR /&gt;
Regards,&lt;BR /&gt;
Leilei</description>
      <pubDate>Tue, 14 Aug 2018 02:08:57 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Archicad-C-API/API-get-the-Concrete-formwork-area-question/m-p/233469#M4182</guid>
      <dc:creator>leilei</dc:creator>
      <dc:date>2018-08-14T02:08:57Z</dc:date>
    </item>
    <item>
      <title>Re: API get the Concrete formwork area question?</title>
      <link>https://community.graphisoft.com/t5/Archicad-C-API/API-get-the-Concrete-formwork-area-question/m-p/233470#M4183</link>
      <description>Hi Lei,&lt;BR /&gt;
&lt;BR /&gt;
I checked it with AC21 and AC22 using the Do_CalcQuantities function, see my video:&lt;BR /&gt;
&lt;A href="https://lorantfyt.tinytake.com/sf/MjgzNzY2Nl84NTIwMjQ4" target="_blank"&gt;https://lorantfyt.tinytake.com/sf/MjgzNzY2Nl84NTIwMjQ4&lt;/A&gt;&lt;BR /&gt;
&lt;BR /&gt;
Using the Do_CalcQuantities function the selected elements will be the coverElemGuids. So after I selected the beam, the returned surface was 6.41, which means it was sucessfully reduced with the intersection.&lt;BR /&gt;
&lt;BR /&gt;
Regards,&lt;BR /&gt;
Tibor</description>
      <pubDate>Tue, 14 Aug 2018 13:31:28 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Archicad-C-API/API-get-the-Concrete-formwork-area-question/m-p/233470#M4183</guid>
      <dc:creator>Tibor Lorantfy</dc:creator>
      <dc:date>2018-08-14T13:31:28Z</dc:date>
    </item>
    <item>
      <title>Re: API get the Concrete formwork area question?</title>
      <link>https://community.graphisoft.com/t5/Archicad-C-API/API-get-the-Concrete-formwork-area-question/m-p/233471#M4184</link>
      <description>Hi Tibor,&lt;BR /&gt;
     Thank you for your answer!&lt;BR /&gt;
      I got the same result according to the operation of your video 6.5, I called another developer to test the element_test demo, and the result is also 6.5. I don't know where there is any difference.&lt;BR /&gt;
      This is the video link I tested in AC21, and I also have the same result in AC22.&lt;BR /&gt;
&lt;A href="https://cl94083851-gmail.tinytake.com/sf/MjgzOTE5NF84NTI0NTIy" target="_blank"&gt;&lt;LINK_TEXT text="https://cl94083851-gmail.tinytake.com/s ... 84NTI0NTIy"&gt;https://cl94083851-gmail.tinytake.com/sf/MjgzOTE5NF84NTI0NTIy&lt;/LINK_TEXT&gt;&lt;/A&gt;&lt;BR /&gt;
This is the Do_CalcQuantities fuction code
&lt;PRE&gt;&lt;I&gt;
&lt;/I&gt;// -----------------------------------------------------------------------------
// Get quantities of the clicked element
// -----------------------------------------------------------------------------

void		Do_CalcQuantities (void)
{
	API_ElemTypeID		typeID;
	API_Guid			guid;
	API_ElementQuantity	quantity;
	API_QuantityPar		params;
	GSErrCode			err;

	if (!ClickAnElem ("Click an element to calculate quantities", API_ZombieElemID, nullptr, &amp;amp;typeID, &amp;amp;guid)) {
		WriteReport_Alert ("No element was clicked");
		return;
	}

	API_Element element;
	BNZeroMemory (&amp;amp;element, sizeof element);
	element.header.typeID = typeID;
	element.header.guid   = guid;

	err = ACAPI_Element_Get (&amp;amp;element);
	if (err != NoError) {
		WriteReport_Alert ("Unknown element");
		return;
	}

	BNZeroMemory (&amp;amp;params, sizeof (API_QuantityPar));
	params.minOpeningSize = EPS;

	GS::Array &amp;lt;API_CompositeQuantity&amp;gt;			composites;
	GS::Array &amp;lt;API_ElemPartQuantity&amp;gt;			elemPartQuantities;
	GS::Array &amp;lt;API_ElemPartCompositeQuantity&amp;gt;	elemPartComposites;

	GS::Array&amp;lt;API_Quantities&amp;gt;	quantities;
	GS::Array&amp;lt;API_Guid&amp;gt;			elemGuids;

	quantities.Push (API_Quantities ());
	quantities[0].elements = &amp;amp;quantity;
	quantities[0].composites = &amp;amp;composites;
	quantities[0].elemPartQuantities = &amp;amp;elemPartQuantities;
	quantities[0].elemPartComposites = &amp;amp;elemPartComposites;
	quantities.Push (quantities[0]);
	quantities.Push (quantities[0]);
	elemGuids.Push (element.header.guid);
	elemGuids.Push (element.header.guid);
	elemGuids.Push (element.header.guid);

	API_QuantitiesMask mask;
	ACAPI_ELEMENT_QUANTITIES_MASK_SETFULL (mask);
	err = ACAPI_Element_GetMoreQuantities (&amp;amp;elemGuids, &amp;amp;params, &amp;amp;quantities, &amp;amp;mask);
	if (err != NoError) {
		ErrorBeep ("ACAPI_Element_GetQuantities", err);
		return;
	}

	WriteReport ("%s GUID:%s", UniStringToConstUTF8String (ElemID_To_Name (typeID)),
	             			   UniStringToConstCString (APIGuidToString (element.header.guid)));

	switch (typeID) {
		case API_WallID:
					WriteReport ("  volume:   %lf", quantity.wall.volume);
					WriteReport ("  surface1: %lf", quantity.wall.surface1);
					WriteReport ("  surface2: %lf", quantity.wall.surface2);
					WriteReport ("  surface3: %lf", quantity.wall.surface3);
					WriteReport ("  length:   %lf", quantity.wall.length);
					WriteReport ("  windowsSurf:    %lf", quantity.wall.windowsSurf);
					WriteReport ("  doorsSurf:      %lf", quantity.wall.doorsSurf);
					WriteReport ("  emptyholesSurf: %lf", quantity.wall.emptyholesSurf);
					WriteReport ("  windowsWidth:   %d",  quantity.wall.windowsWidth);
					WriteReport ("  doorsWidth:     %lf", quantity.wall.doorsWidth);
					for (UInt32 i = 0; i &amp;lt; composites.GetSize (); i++) {
						API_Attribute	attr;
						GS::UniString	cFlags;
						GSErrCode		err;

						BNZeroMemory (&amp;amp;attr, sizeof(API_Attribute));
						attr.header.typeID = API_BuildingMaterialID;
						attr.header.index = composites&lt;I&gt;.buildMatIndices;

						err = ACAPI_Attribute_Get (&amp;amp;attr);
						if (err == NoError) {
							if ((composites&lt;I&gt;.flags &amp;amp; APISkin_Core) != 0) {
								cFlags.Assign ("Core");
							} if ((composites&lt;I&gt;.flags &amp;amp; APISkin_Finish) != 0) {
								if (!cFlags.IsEmpty ())
									cFlags.Append ("+");
								cFlags.Append ("Finish");
							}
						}

						WriteReport ("  	composite:   %s[%d]		- volume: %lf		- projected area: %lf	- flag: %s", attr.header.name, composites&lt;I&gt;.buildMatIndices, composites&lt;I&gt;.volumes, composites&lt;I&gt;.projectedArea, static_cast&amp;lt;const char*&amp;gt; (cFlags.ToCStr ()));
					}
 					break;
		case API_ColumnID:
					WriteReport ("  coreSurface: %lf", quantity.column.coreSurface);
					WriteReport ("  veneSurface: %lf", quantity.column.veneSurface);
					WriteReport ("  coreVolume:  %lf", quantity.column.coreVolume);
					WriteReport ("  veneVolume:  %lf", quantity.column.veneVolume);
					break;
		case API_BeamID:
					WriteReport ("  rightLength:      %lf", quantity.beam.rightLength);
					WriteReport ("  leftLength:       %lf", quantity.beam.leftLength);
					WriteReport ("  bottomSurface:    %lf", quantity.beam.bottomSurface);
					WriteReport ("  topSurface:       %lf", quantity.beam.topSurface);
					WriteReport ("  edgeSurfaceLeft:  %lf", quantity.beam.edgeSurfaceLeft);
					WriteReport ("  edgeSurfaceRight: %lf", quantity.beam.edgeSurfaceRight);
					WriteReport ("  edgeSurface:      %lf", quantity.beam.edgeSurface);
					WriteReport ("  holesSurface:     %lf", quantity.beam.holesSurface);
					WriteReport ("  holesEdgeSurface: %lf", quantity.beam.holesEdgeSurface);
					WriteReport ("  holesNumber:      %d",  quantity.beam.holesNumber);
					WriteReport ("  volume:           %lf", quantity.beam.volume);
					WriteReport ("  holesVolume:      %lf", quantity.beam.holesVolume);
					break;
		case API_DoorID:
		case API_WindowID:
		case API_SkylightID:
					WriteReport ("  surface:  %lf", quantity.window.surface);
					WriteReport ("  volume:   %lf", quantity.window.volume);
					break;
		case API_ObjectID:
		case API_LampID:
					WriteReport ("  surface:  %lf", quantity.symb.surface);
					WriteReport ("  volume:   %lf", quantity.symb.volume);
					break;
		case API_SlabID:
					WriteReport ("  bottomSurface: %lf", quantity.slab.bottomSurface);
					WriteReport ("  topSurface:    %lf", quantity.slab.topSurface);
					WriteReport ("  edgeSurface:   %lf", quantity.slab.edgeSurface);
					WriteReport ("  volume:        %lf", quantity.slab.volume);
					WriteReport ("  perimeter:     %lf", quantity.slab.perimeter);
					WriteReport ("  holesSurf:     %lf", quantity.slab.holesSurf);
					WriteReport ("  holesPrm:      %lf", quantity.slab.holesPrm);
					for (UInt32 i = 0; i &amp;lt; composites.GetSize (); i++) {
						WriteReport ("  	composite:   %d		- volume: %lf		- projected area: %lf", composites&lt;I&gt;.buildMatIndices, composites&lt;I&gt;.volumes, composites&lt;I&gt;.projectedArea);
					}
					break;
		case API_MeshID:
					WriteReport ("  bottomSurface: %lf", quantity.mesh.bottomSurface);
					WriteReport ("  topSurface:    %lf", quantity.mesh.topSurface);
					WriteReport ("  edgeSurface:   %lf", quantity.mesh.edgeSurface);
					WriteReport ("  volume:        %lf", quantity.mesh.volume);
					WriteReport ("  perimeter:     %lf", quantity.mesh.perimeter);
					WriteReport ("  holesSurf:     %lf", quantity.mesh.holesSurf);
					WriteReport ("  holesPrm:      %lf", quantity.mesh.holesPrm);
					break;
		case API_RoofID:
					WriteReport ("  bottomSurface: %lf", quantity.roof.bottomSurface);
					WriteReport ("  topSurface:    %lf", quantity.roof.topSurface);
					WriteReport ("  edgeSurface:   %lf", quantity.roof.edgeSurface);
					WriteReport ("  volume:        %lf", quantity.roof.volume);
					WriteReport ("  perimeter:     %lf", quantity.roof.perimeter);
					WriteReport ("  holesSurf:     %lf", quantity.roof.holesSurf);
					WriteReport ("  holesPrm:      %lf", quantity.roof.holesPrm);
					for (UInt32 i = 0; i &amp;lt; composites.GetSize (); i++) {
						WriteReport ("  	composite:   %d		- volume: %lf		- projected area: %lf", composites&lt;I&gt;.buildMatIndices, composites&lt;I&gt;.volumes, composites&lt;I&gt;.projectedArea);
					}
					WriteReport ("  elemPartQuantities:      %d", elemPartQuantities.GetSize ());
					for (UInt32 i = 0; i &amp;lt; elemPartQuantities.GetSize (); i++) {
						WriteReport ("  	[%d,%d]		- volume: %lf", elemPartQuantities&lt;I&gt;.partId.main, elemPartQuantities&lt;I&gt;.partId.sub, elemPartQuantities&lt;I&gt;.quantity.roof.volume);
					}
					WriteReport ("  elemPartComposites:      %d", elemPartComposites.GetSize ());
					for (UInt32 i = 0; i &amp;lt; elemPartComposites.GetSize (); i++) {
						WriteReport ("  	[%d,%d]", elemPartComposites&lt;I&gt;.partId.main, elemPartComposites&lt;I&gt;.partId.sub);
						for (UInt32 j = 0; j &amp;lt; elemPartComposites&lt;I&gt;.composites.GetSize (); j++) {
							WriteReport ("  		composite:   %d		- volume: %lf		- projected area: %lf", elemPartComposites&lt;I&gt;.composites&lt;J&gt;.buildMatIndices, elemPartComposites&lt;I&gt;.composites&lt;J&gt;.volumes, elemPartComposites&lt;I&gt;.composites&lt;J&gt;.projectedArea);
						}
					}
					break;
		case API_ShellID:
					WriteReport ("  referenceSurface: %lf", quantity.shell.referenceSurface);
					WriteReport ("  oppositeSurface:    %lf", quantity.shell.oppositeSurface);
					WriteReport ("  edgeSurface:   %lf", quantity.shell.edgeSurface);
					WriteReport ("  volume:        %lf", quantity.shell.volume);
					WriteReport ("  perimeter:     %lf", quantity.shell.perimeter);
					WriteReport ("  holesSurf:     %lf", quantity.shell.holesSurf);
					WriteReport ("  holesPrm:      %lf", quantity.shell.holesPrm);
					for (UInt32 i = 0; i &amp;lt; composites.GetSize (); i++) {
						WriteReport ("  	composite:   %d		- volume: %lf		- projected area: %lf", composites&lt;I&gt;.buildMatIndices, composites&lt;I&gt;.volumes, composites&lt;I&gt;.projectedArea);
					}
					break;
		case API_MorphID:
					WriteReport ("  surface:  %lf", quantity.morph.surface);
					WriteReport ("  volume:   %lf", quantity.morph.volume);
					WriteReport ("  elemPartQuantities:      %d", elemPartQuantities.GetSize ());
					for (UInt32 i = 0; i &amp;lt; elemPartQuantities.GetSize (); i++) {
						WriteReport ("  	floor[%d]		- volume: %lf, floorPlanArea: %lf, baseLevel: %lf, baseHeight: %lf, wholeHeight: %lf",
									elemPartQuantities&lt;I&gt;.partId.floor,
									elemPartQuantities&lt;I&gt;.quantity.morph.volume,
									elemPartQuantities&lt;I&gt;.quantity.morph.floorPlanArea,
									elemPartQuantities&lt;I&gt;.quantity.morph.baseLevel,
									elemPartQuantities&lt;I&gt;.quantity.morph.baseHeight,
									elemPartQuantities&lt;I&gt;.quantity.morph.wholeHeight);
					}
					break;
		case API_HatchID:
					WriteReport ("  surface:    %lf", quantity.hatch.surface);
					WriteReport ("  perimeter:  %lf", quantity.hatch.perimeter);
					WriteReport ("  holesPrm:   %lf", quantity.hatch.holesPrm);
					WriteReport ("  holesSurf:  %lf", quantity.hatch.holesSurf);
					break;
		case API_ZoneID:
					WriteReport ("  area:           %lf", quantity.zone.area);
					WriteReport ("  perimeter:      %lf", quantity.zone.perimeter);
					WriteReport ("  holesPrm:       %lf", quantity.zone.holesPrm);
					WriteReport ("  wallsPrm:       %lf", quantity.zone.wallsPrm);
					WriteReport ("  allCorners:     %d",  quantity.zone.allCorners);
					WriteReport ("  concaveCorners: %d",  quantity.zone.concaveCorners);
					WriteReport ("  wallsSurf:      %lf", quantity.zone.wallsSurf);
					WriteReport ("  doorsWidth:     %lf", quantity.zone.doorsWidth);
					WriteReport ("  doorsSurf:      %lf", quantity.zone.doorsSurf);
					WriteReport ("  windowsWidth:   %lf", quantity.zone.windowsWidth);
					WriteReport ("  windowsSurf:    %lf", quantity.zone.windowsSurf);
					WriteReport ("  baseLevel:      %lf", quantity.zone.baseLevel);
					WriteReport ("  floorThick:     %lf", quantity.zone.floorThick);
					WriteReport ("  height:         %lf", quantity.zone.height);
					WriteReport ("  netarea:        %lf", quantity.zone.netarea);
					WriteReport ("  netperimeter:   %lf", quantity.zone.netperimeter);
					break;
		default:
					WriteReport ("  Please click a 3D element", true);
					break;
	}

	API_Neig				**neigs;
	GS::Array&amp;lt;API_Guid&amp;gt;		coverElemGuids;
	API_SelectionInfo		selectionInfo;
	err = ACAPI_Selection_Get (&amp;amp;selectionInfo, &amp;amp;neigs, false);
	UInt32 nSel = BMGetHandleSize ((GSHandle) neigs) / sizeof (API_Neig);
	for (UInt32 i = 0; i &amp;lt; nSel; i++) {
		coverElemGuids.Push ((*neigs)&lt;I&gt;.guid);
	}

	BMKillHandle (reinterpret_cast&amp;lt;GSHandle *&amp;gt; (&amp;amp;neigs));

	GS::Array &amp;lt;API_ElemPartSurfaceQuantity&amp;gt;		elemPartSurfaces;
	elemGuids.Pop ();	// We have the same item 3 times. Have no idea why.
	elemGuids.Pop ();
	err = ACAPI_Element_GetSurfaceQuantities (&amp;amp;elemGuids, &amp;amp;coverElemGuids, &amp;amp;elemPartSurfaces);
	if (err != NoError) {
		ErrorBeep ("ACAPI_Element_GetSurfaceQuantities", err);
		return;
	}

	WriteReport ("---------- Exposed Surfaces ----------");
	WriteReport ("%s GUID : %s", UniStringToConstUTF8String (ElemID_To_Name (typeID)),
	             				 UniStringToConstCString (APIGuidToString (element.header.guid)));
	for (UInt32 i = 0; i &amp;lt; elemPartSurfaces.GetSize (); i++) {
		GS::UniString surfaceQuantityString;
		surfaceQuantityString += "Surface " + GS::ValueToUniString (i) + GS::UniString (GS::EOL);
		surfaceQuantityString += "  GUID           : " + APIGuidToString (elemPartSurfaces&lt;I&gt;.elemGUID) + GS::UniString (GS::EOL);
		surfaceQuantityString += "  ComponentIndex : " + GS::ValueToUniString (elemPartSurfaces&lt;I&gt;.componentIndex) + GS::UniString (GS::EOL);
		surfaceQuantityString += "  MaterialIndex  : " + GS::ValueToUniString (elemPartSurfaces&lt;I&gt;.materialIndex) + GS::UniString (GS::EOL);
		surfaceQuantityString += "  BuildMatIndex  : " + GS::ValueToUniString (elemPartSurfaces&lt;I&gt;.buildMatIdx) + GS::UniString (GS::EOL);
		surfaceQuantityString += "  ExposedSurface : " + GS::ValueToUniString (elemPartSurfaces&lt;I&gt;.exposedSurface) + GS::UniString (GS::EOL);
		WriteReport ("%s", surfaceQuantityString.ToCStr ().Get ());
	}
	WriteReport ("---------- Exposed Surfaces ----------");
	return;
}		// Do_CalcQuantities
&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/J&gt;&lt;/I&gt;&lt;/J&gt;&lt;/I&gt;&lt;/J&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/PRE&gt;
Regards,&lt;BR /&gt;
Leilei</description>
      <pubDate>Wed, 15 Aug 2018 03:19:43 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Archicad-C-API/API-get-the-Concrete-formwork-area-question/m-p/233471#M4184</guid>
      <dc:creator>leilei</dc:creator>
      <dc:date>2018-08-15T03:19:43Z</dc:date>
    </item>
    <item>
      <title>Re: API get the Concrete formwork area question?</title>
      <link>https://community.graphisoft.com/t5/Archicad-C-API/API-get-the-Concrete-formwork-area-question/m-p/233472#M4185</link>
      <description>Hi Lei,&lt;BR /&gt;
&lt;BR /&gt;
Thank you for the video!&lt;BR /&gt;
Could you tell me please the following informations about your ARCHICAD?&lt;BR /&gt;
- version number&lt;BR /&gt;
- build number&lt;BR /&gt;
- language version&lt;BR /&gt;
&lt;BR /&gt;
Thanks,&lt;BR /&gt;
Tibor</description>
      <pubDate>Wed, 15 Aug 2018 08:27:45 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Archicad-C-API/API-get-the-Concrete-formwork-area-question/m-p/233472#M4185</guid>
      <dc:creator>Tibor Lorantfy</dc:creator>
      <dc:date>2018-08-15T08:27:45Z</dc:date>
    </item>
    <item>
      <title>Re: API get the Concrete formwork area question?</title>
      <link>https://community.graphisoft.com/t5/Archicad-C-API/API-get-the-Concrete-formwork-area-question/m-p/233473#M4186</link>
      <description>Hi Tibor,&lt;BR /&gt;
  &lt;BR /&gt;
     I tested the results using the demo versions of AC21 and AC22. Their version information is in the image below.At the same time, I also tested it in the AC21 Chinese version.These informations are:&lt;BR /&gt;
version number:21.0.0&lt;BR /&gt;
build number:5021&lt;BR /&gt;
language version: simple Chinese&lt;BR /&gt;
version number:21.0.0&lt;BR /&gt;
build number:3005&lt;BR /&gt;
language version: English(INT)&lt;BR /&gt;
version number:22.0.0&lt;BR /&gt;
build number:3004&lt;BR /&gt;
language version: English(INT)&lt;BR /&gt;
     Maybe it's a problem with the project environment settings. Can you send me your pln demo test for testing?&lt;BR /&gt;
&lt;BR /&gt;
Regards,&lt;BR /&gt;
Leilei</description>
      <pubDate>Wed, 15 Aug 2018 10:41:11 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Archicad-C-API/API-get-the-Concrete-formwork-area-question/m-p/233473#M4186</guid>
      <dc:creator>leilei</dc:creator>
      <dc:date>2018-08-15T10:41:11Z</dc:date>
    </item>
    <item>
      <title>Re: API get the Concrete formwork area question?</title>
      <link>https://community.graphisoft.com/t5/Archicad-C-API/API-get-the-Concrete-formwork-area-question/m-p/233474#M4187</link>
      <description>Hi Leilei,&lt;BR /&gt;
&lt;BR /&gt;
Here's my simple project with one column and one beam:


I tried using AC21 INT 6551 and AC22 INT 3544. But I will test it using your builds too.&lt;BR /&gt;
&lt;BR /&gt;
Regards,&lt;BR /&gt;
Tibor</description>
      <pubDate>Wed, 15 Aug 2018 11:28:59 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Archicad-C-API/API-get-the-Concrete-formwork-area-question/m-p/233474#M4187</guid>
      <dc:creator>Tibor Lorantfy</dc:creator>
      <dc:date>2018-08-15T11:28:59Z</dc:date>
    </item>
    <item>
      <title>Re: API get the Concrete formwork area question?</title>
      <link>https://community.graphisoft.com/t5/Archicad-C-API/API-get-the-Concrete-formwork-area-question/m-p/233475#M4188</link>
      <description>Hi Tibor,&lt;BR /&gt;
  &lt;BR /&gt;
      I tested your PLN DEMO, but the same result is 6.5. I don't know why. I called other Chinese developers to test and get the same result.&lt;BR /&gt;
&lt;BR /&gt;
Regards,&lt;BR /&gt;
Leilei</description>
      <pubDate>Thu, 16 Aug 2018 02:03:22 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Archicad-C-API/API-get-the-Concrete-formwork-area-question/m-p/233475#M4188</guid>
      <dc:creator>leilei</dc:creator>
      <dc:date>2018-08-16T02:03:22Z</dc:date>
    </item>
    <item>
      <title>Re: API get the Concrete formwork area question?</title>
      <link>https://community.graphisoft.com/t5/Archicad-C-API/API-get-the-Concrete-formwork-area-question/m-p/233476#M4189</link>
      <description>Hi Tibor,&lt;BR /&gt;
&lt;BR /&gt;
     I tested the AC's own list to calculate the exposed area.This value is correct, but there are some differences.&lt;BR /&gt;
   There is a demo video link here:&lt;BR /&gt;
&lt;A href="https://cl94083851-gmail.tinytake.com/sf/Mjg0MTY0OF84NTMyMjAy" target="_blank"&gt;&lt;LINK_TEXT text="https://cl94083851-gmail.tinytake.com/s ... 84NTMyMjAy"&gt;https://cl94083851-gmail.tinytake.com/sf/Mjg0MTY0OF84NTMyMjAy&lt;/LINK_TEXT&gt;&lt;/A&gt;&lt;BR /&gt;
&lt;BR /&gt;
Regards,&lt;BR /&gt;
Leilei</description>
      <pubDate>Thu, 16 Aug 2018 03:14:51 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Archicad-C-API/API-get-the-Concrete-formwork-area-question/m-p/233476#M4189</guid>
      <dc:creator>leilei</dc:creator>
      <dc:date>2018-08-16T03:14:51Z</dc:date>
    </item>
    <item>
      <title>Re: API get the Concrete formwork area question?</title>
      <link>https://community.graphisoft.com/t5/Archicad-C-API/API-get-the-Concrete-formwork-area-question/m-p/233477#M4190</link>
      <description>One off topic question. How are you setting up VS to read addon output like on your movies? &lt;BR /&gt;
&lt;BR /&gt;
Is there a way to compile addon when AC is running? &lt;BR /&gt;
For now, I'm always close and open AC when compiling the new version since addon files are used by the AC process.</description>
      <pubDate>Mon, 20 Aug 2018 15:41:46 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Archicad-C-API/API-get-the-Concrete-formwork-area-question/m-p/233477#M4190</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2018-08-20T15:41:46Z</dc:date>
    </item>
    <item>
      <title>Re: API get the Concrete formwork area question?</title>
      <link>https://community.graphisoft.com/t5/Archicad-C-API/API-get-the-Concrete-formwork-area-question/m-p/233478#M4191</link>
      <description>&lt;BLOCKQUOTE&gt;kzaremba wrote:&lt;BR /&gt;
One off topic question. How are you setting up VS to read addon output like on your movies? &lt;BR /&gt;
&lt;BR /&gt;
Is there a way to compile addon when AC is running? &lt;BR /&gt;
For now, I'm always close and open AC when compiling the new version since addon files are used by the AC process.
&lt;/BLOCKQUOTE&gt;
Hi  kzaremba,&lt;BR /&gt;
  1：When you are debugging archicad, you can use WriteReport fuction to get the output.&lt;BR /&gt;
  2：You start archicad directly without debugging,you can use WriteReport_Alert fuction to get the output with a messagebox.&lt;BR /&gt;
Regards,&lt;BR /&gt;
Leilei</description>
      <pubDate>Tue, 21 Aug 2018 03:56:23 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Archicad-C-API/API-get-the-Concrete-formwork-area-question/m-p/233478#M4191</guid>
      <dc:creator>leilei</dc:creator>
      <dc:date>2018-08-21T03:56:23Z</dc:date>
    </item>
  </channel>
</rss>

