We value your input! Please participate in Archicad 28 Home Screen and Tooltips/Quick Tutorials survey
2014-11-20 10:13 AM - last edited on 2023-08-01 01:58 PM by Doreena Deng
2014-12-03 11:34 AM
// ----------------------------------------------------------------------------- // Dump a vertices of a body (VERT) // ----------------------------------------------------------------------------- static void DumpVertices (Int32 ibody, const API_Coord& dbOffset) { API_Component3D component; Int32 j, nVert; API_Tranmat tm; GSErrCode err; WriteReport ("BODY #%d", ibody); BNZeroMemory (&component, sizeof (component)); component.header.typeID = API_BodyID; component.header.index = ibody; err = ACAPI_3D_GetComponent (&component); if (err != NoError) { WriteReport (" ERROR"); return; } nVert = component.body.nVert; tm = component.body.tranmat; WriteReport (" VERTs"); for (j = 1; j <= nVert; j++) { component.header.typeID = API_VertID; component.header.index = j; err = ACAPI_3D_GetComponent (&component); if (err == NoError) { API_Coord3D trCoord; // world coordinates trCoord.x = tm.tmx[0]*component.vert.x + tm.tmx[1]*component.vert.y + tm.tmx[2]*component.vert.z + tm.tmx[3]; trCoord.y = tm.tmx[4]*component.vert.x + tm.tmx[5]*component.vert.y + tm.tmx[6]*component.vert.z + tm.tmx[7]; trCoord.z = tm.tmx[8]*component.vert.x + tm.tmx[9]*component.vert.y + tm.tmx[10]*component.vert.z + tm.tmx[11]; trCoord.x += dbOffset.x; trCoord.y += dbOffset.y; WriteReport (" [%2d] (%lf, %lf, %lf)", j, trCoord.x, trCoord.y, trCoord.z); } } return; } // DumpVertices //------------------------------------------------------------------------------------------ err = ACAPI_Element_Get3DInfo (elemHead, &info3D); if (err == APIERR_BADID) { WriteReport_Alert ("This element does not have 3D information."); return; } if (err != NoError) { ErrorBeep ("Error in ACAPI_Element_Get3DInfo", err); return; } for (Int32 ibody = info3D.fbody; ibody <= info3D.lbody; ibody++) DumpVertices (ibody, dbOffset);