// ----------------------------------------------------------------------------- // GetTeamworkMembers // // collect information of joined Teamwork members // ----------------------------------------------------------------------------- static GSErrCode GetTeamworkMembers (GS::HashTable<short, API_UserInfo>& userInfoTable, short& myUserId) { API_ProjectInfo projectInfo; BNZeroMemory (&projectInfo, sizeof (API_ProjectInfo)); GSErrCode err = ACAPI_Environment (APIEnv_ProjectID, &projectInfo); if (projectInfo.location != NULL) delete projectInfo.location; if (projectInfo.location_team != NULL) delete projectInfo.location_team; if (err != NoError) return err; myUserId = projectInfo.userId; API_SharingInfo sharingInfo; BNZeroMemory (&sharingInfo, sizeof (API_SharingInfo)); err = ACAPI_Environment (APIEnv_ProjectSharingID, &sharingInfo); if (err == NoError && sharingInfo.users != NULL) { for (Int32 i = 0; i < sharingInfo.nUsers; i++) userInfoTable.Add (((*sharingInfo.users)[i]).userId, (*sharingInfo.users)[i]); } if (sharingInfo.users != NULL) BMhKill (reinterpret_cast<GSHandle*>(&sharingInfo.users)); return err; } /* GetTeamworkMembers */
void getColumns(){ API_Element element; GSErrCode err; char buffer[256]; columnrepeated columnMsg; API_StoryInfo storyInfo; storyinfo* storyInfoMsg; err = ACAPI_Environment(APIEnv_GetStorySettingsID, &storyInfo, NULL); if (err != NoError) { ErrorBeep("APIEnv_GetStorySettingsID", err); return; } GS::Array<API_Guid> elemList; ACAPI_Element_GetElemList(API_ColumnID, &elemList); for (GS::Array<API_Guid>::ConstIterator it = elemList.Enumerate(); it != NULL; ++it) { BNZeroMemory(&element, sizeof(API_Element)); element.header.guid = *it; err = ACAPI_Element_Get(&element); if (err == NoError) { columnMsg.add_px(element.column.origoPos.x); columnMsg.add_py(element.column.origoPos.y); storyInfoMsg = columnMsg.add_bottomlevel(); storyInfoMsg->set_exists(true); storyInfoMsg->set_index(element.header.floorInd); storyInfoMsg->set_level((*storyInfo.data)[element.header.floorInd - storyInfo.firstStory].level); storyInfoMsg->set_name((*storyInfo.data)[element.header.floorInd - storyInfo.firstStory].name); storyInfoMsg = columnMsg.add_toplevel(); storyInfoMsg->set_exists(true); storyInfoMsg->set_index(element.header.floorInd + 1); storyInfoMsg->set_level((*storyInfo.data)[element.header.floorInd + 1 - storyInfo.firstStory].level); storyInfoMsg->set_name((*storyInfo.data)[element.header.floorInd + 1 - storyInfo.firstStory].name); columnMsg.add_circular(element.column.circleBased); columnMsg.add_angle(element.column.angle); columnMsg.add_depth(element.column.coreDepth); columnMsg.add_width(element.column.coreWidth); columnMsg.add_slantangle(element.column.slantAngle); columnMsg.add_slantdirection(element.column.slantDirectionAngle); char s[64]; APIGuid2GSGuid(element.header.guid).ConvertToString(s); columnMsg.add_guid(s); } else{ sprintf(buffer, ErrID_To_Name(err)); ACAPI_WriteReport(buffer, true); } } //writeDelimitedTo(wallInfo, raw_out); writeDelimitedTo(getClientSocket(), columnMsg); BMKillHandle(reinterpret_cast<GSHandle *> (&storyInfo.data)); }
void getPolyLines(){ API_Element element; API_ElementMemo memo; API_StoryInfo storyInfo; GSErrCode err; char buffer[256]; getpolylinesmsg msg; polylinemsg* polylineMsg; pointsmessage* pts; polyarcsmessage* arcs; err = ACAPI_Environment(APIEnv_GetStorySettingsID, &storyInfo, NULL); if (err != NoError) { ErrorBeep("APIEnv_GetStorySettingsID", err); return; } GS::Array<API_Guid> elemList; ACAPI_Element_GetElemList(API_PolyLineID, &elemList); for (GS::Array<API_Guid>::ConstIterator it = elemList.Enumerate(); it != NULL; ++it) { BNZeroMemory(&element, sizeof(API_Element)); element.header.guid = *it; err = ACAPI_Element_Get(&element); if (hasError(err)){ quit(); return; } err = ACAPI_Element_GetMemo(element.header.guid, &memo); if (hasError(err)){ quit(); return; } char s[64]; APIGuid2GSGuid(element.header.guid).ConvertToString(s); msg.add_guids(s); polylineMsg = msg.add_polylines(); pts = new pointsmessage(); for (int i = 1; i <= element.polyLine.poly.nCoords; i++){ pts->add_px((*memo.coords)[i].x); pts->add_py((*memo.coords)[i].y); pts->add_pz((*storyInfo.data)[element.header.floorInd - storyInfo.firstStory].level); } polylineMsg->set_allocated_pts(pts); arcs = new polyarcsmessage(); int arcscounter = 1; for (int i = 0; i < element.polyLine.poly.nArcs; i++){ for (; arcscounter < (*memo.parcs)[i].begIndex; arcscounter++){ arcs->add_arcangle(0); arcs->add_begindex(arcscounter); arcs->add_endindex(arcscounter + 1); } arcs->add_arcangle((*memo.parcs)[i].arcAngle); arcs->add_begindex((*memo.parcs)[i].begIndex); arcs->add_endindex((*memo.parcs)[i].endIndex); arcscounter++; } polylineMsg->set_allocated_arcs(arcs); } writeDelimitedTo(getClientSocket(), msg); BMKillHandle(reinterpret_cast<GSHandle *> (&storyInfo.data)); }
void getRoofs(){ API_Element element; API_ElementMemo memo; GSErrCode err; char buffer[256]; roofrepeated roofMsg; API_StoryInfo storyInfo; storyinfo* storyInfoMsg; pointsmessage* points; intlistmsg* subpolygons; err = ACAPI_Environment(APIEnv_GetStorySettingsID, &storyInfo, NULL); if (err != NoError) { ErrorBeep("APIEnv_GetStorySettingsID", err); return; } GS::Array<API_Guid> elemList; ACAPI_Element_GetElemList(API_RoofID, &elemList); for (GS::Array<API_Guid>::ConstIterator it = elemList.Enumerate(); it != NULL; ++it) { BNZeroMemory(&element, sizeof(API_Element)); element.header.guid = *it; err = ACAPI_Element_Get(&element); if (err == NoError) { err = ACAPI_Element_GetMemo(element.header.guid, &memo); if (err == NoError){ points = roofMsg.add_points(); subpolygons = roofMsg.add_subpolygons(); for (int i = 1; i <= element.roof.u.planeRoof.poly.nCoords; i++){ points->add_px((*memo.coords)[i].x); points->add_py((*memo.coords)[i].y); points->add_pz((*storyInfo.data)[element.header.floorInd - storyInfo.firstStory].level); } for (int i = 1; i <= element.roof.u.planeRoof.poly.nSubPolys; i++){ subpolygons->add_ilist((*memo.pends)[i]); } storyInfoMsg = roofMsg.add_bottomlevel(); storyInfoMsg->set_exists(true); storyInfoMsg->set_index(element.header.floorInd); storyInfoMsg->set_level((*storyInfo.data)[element.header.floorInd - storyInfo.firstStory].level); storyInfoMsg->set_name((*storyInfo.data)[element.header.floorInd - storyInfo.firstStory].name); roofMsg.add_height(element.roof.shellBase.level); roofMsg.add_thickness(element.slab.thickness); std::string materialName; if (element.roof.shellBase.modelElemStructureType == API_BasicStructure){ materialName = searchBuildingMaterialsValue(element.roof.shellBase.buildingMaterial); roofMsg.add_type("Basic"); } else{ materialName = searchCompositeMaterialsValue(element.roof.shellBase.composite); roofMsg.add_type("Composite"); } if (materialName == "Not Found"){ sprintf(buffer, "Found no material"); ACAPI_WriteReport(buffer, true); } else{ roofMsg.add_material(materialName); } char s[64]; APIGuid2GSGuid(element.header.guid).ConvertToString(s); roofMsg.add_guid(s); } } else{ sprintf(buffer, ErrID_To_Name(err)); ACAPI_WriteReport(buffer, true); } } writeDelimitedTo(getClientSocket(), roofMsg); BMKillHandle(reinterpret_cast<GSHandle *> (&storyInfo.data)); }
void getObjects(){ API_Element element; GSErrCode err; char buffer[256]; objectrepeated objectMsg; API_StoryInfo storyInfo; storyinfo* storyInfoMsg; err = ACAPI_Environment(APIEnv_GetStorySettingsID, &storyInfo, NULL); if (err != NoError) { ErrorBeep("APIEnv_GetStorySettingsID", err); return; } GS::Array<API_Guid> elemList; ACAPI_Element_GetElemList(API_ObjectID, &elemList); for (GS::Array<API_Guid>::ConstIterator it = elemList.Enumerate(); it != NULL; ++it) { BNZeroMemory(&element, sizeof(API_Element)); element.header.guid = *it; err = ACAPI_Element_Get(&element); if (err == NoError) { std::string objectName = searchObjectsValue(element.object.libInd); if (objectName == "Not Found"){ sprintf(buffer, "Found no material"); ACAPI_WriteReport(buffer, true); } else{ objectMsg.add_name(objectName); } objectMsg.add_px(element.object.pos.x); objectMsg.add_py(element.object.pos.y); storyInfoMsg = objectMsg.add_bottomlevel(); storyInfoMsg->set_exists(true); storyInfoMsg->set_index(element.header.floorInd); storyInfoMsg->set_level((*storyInfo.data)[element.header.floorInd - storyInfo.firstStory].level); storyInfoMsg->set_name((*storyInfo.data)[element.header.floorInd - storyInfo.firstStory].name); objectMsg.add_angle(element.object.angle); objectMsg.add_xratio(element.object.xRatio); objectMsg.add_yratio(element.object.yRatio); objectMsg.add_bottomoffset(element.object.level); if (element.header.variationID == APIVarId_SymbStair){ objectMsg.add_stairs(true); } else{ objectMsg.add_stairs(false); } objectMsg.add_usexyfixsize(element.object.useXYFixSize); char s[64]; APIGuid2GSGuid(element.header.guid).ConvertToString(s); objectMsg.add_guid(s); } else{ sprintf(buffer, ErrID_To_Name(err)); ACAPI_WriteReport(buffer, true); } } writeDelimitedTo(getClientSocket(), objectMsg); BMKillHandle(reinterpret_cast<GSHandle *> (&storyInfo.data)); }