2021-07-19 09:02 AM - last edited on 2021-09-14 09:26 AM by Noemi Balogh
long Get3DInfo (const API_Guid& guid) { DBASSERT (APINULLGuid != guid); m_Guid = guid; BNZeroMemory (&m_info3D, sizeof (API_ElemInfo3D)); API_Elem_Head elemHead; BNZeroMemory (&elemHead, sizeof (API_Elem_Head)); elemHead.guid = m_Guid; ACAPI_Element_GetHeader (&elemHead); m_err = ACAPI_Element_Get3DInfo (elemHead, &m_info3D); if (m_err == APIERR_BADID) return 0; if (m_err == APIERR_GENERAL) return 0; if (m_err != NoError) { ErrorBeep ("Error in ACAPI_Element_Get3DInfo", m_err); return 0; } m_nBody = m_info3D.lbody - m_info3D.fbody + 1; if (m_nBody > 0) GetBody (m_info3D.fbody); return m_nBody; } bool GetBody (long bodyIndex) { DBASSERT (APINULLGuid != m_Guid); DBASSERT (bodyIndex > 0); DBASSERT (bodyIndex >= m_info3D.fbody && bodyIndex <= m_info3D.lbody); BNZeroMemory (&m_component, sizeof (API_Component3D)); m_component.header.typeID = API_BodyID; m_component.header.index = bodyIndex; m_err = ACAPI_3D_GetComponent (&m_component); // ACAPI_3D_GetComponent return APIERR_DELETED in Archicad24 if (m_err == APIERR_DELETED) m_err = NoError; if (m_err != NoError) { ErrorBeep ("Error in ACAPI_Element_Get3DInfo", m_err); return false; } return true; }
Solved! Go to Solution.
2021-07-19 09:26 AM
for (int i = 0; i < BMpGetSize((GSPtr)(memo.columnSegments)) / sizeof(API_ColumnSegmentType); i++) { Get3DInfo(memo.columnSegments.head.guid); }
2021-07-19 09:26 AM
for (int i = 0; i < BMpGetSize((GSPtr)(memo.columnSegments)) / sizeof(API_ColumnSegmentType); i++) { Get3DInfo(memo.columnSegments.head.guid); }
2021-07-19 11:03 AM
leilei wrote:Thank you. It works!
Hi,Maybe the element is column、beam.When you get the guids of beams and columns.You should traverse the sub elements in memo.columnSegments or memo.beamSegments.for (int i = 0; i < BMpGetSize((GSPtr)(memo.columnSegments)) / sizeof(API_ColumnSegmentType); i++) { Get3DInfo(memo.columnSegments.head.guid); }