void deleteElements(){ API_Element element; elementidlist elementsToDelete; GSErr err; char buffer[256]; readDelimitedFrom(getClientSocket(), &elementsToDelete); BNZeroMemory(&element, sizeof(API_Element)); API_Elem_Head* test; for (int i = 0; i < elementsToDelete.guid_size(); i++){ element.header.guid = APIGuidFromString(elementsToDelete.guid(i).c_str()); if (ACAPI_Element_Get(&element) == NoError){ layermsg layerMsg; layerMsg.set_name(searchLayers(element.header.layer)); bool hidden = hiddenLayer(layerMsg); if (hidden){ controlLayer(layerMsg, true); } test = &element.header; err = ACAPI_Element_Delete(&test, 1); if (hidden){ controlLayer(layerMsg, false); } if (hasError(err)){ quit(); return; } } } }
// ----------------------------------------------------------------------------- // LockableReservationChangeHandler // // lists the recent lockable object reservation changes in Teamwork // ----------------------------------------------------------------------------- static GSErrCode __ACENV_CALL LockableReservationChangeHandler (const API_Guid& objectId, short ownerId) { GS::HashTable<short, API_UserInfo> userInfoTable; short myUserId = 0; GSErrCode err = GetTeamworkMembers (userInfoTable, myUserId); if (err != NoError) return err; GS::HashTable<API_Guid, GS::UniString> lockableObjectSets; lockableObjectSets.Add (APIGuidFromString ("5D8068E2-7430-4871-9D67-E06001F256A1"), "Cities"); lockableObjectSets.Add (APIGuidFromString ("A36401CC-77B1-4410-BCEB-A7684706A17F"), "Composites"); lockableObjectSets.Add (APIGuidFromString ("F97013BD-662E-42a1-A749-9C73CD2D0790"), "Favorites"); lockableObjectSets.Add (APIGuidFromString ("4C036A66-C2FF-4c3b-9FF4-F45A810B5F84"), "Fill Types"); lockableObjectSets.Add (ACAPI_TeamworkControl_FindLockableObjectSet ("LayerSettingsDialog"), "Layer Settings"); lockableObjectSets.Add (APIGuidFromString ("702A8569-EA8F-4de8-900C-696980FB13D6"), "Line Types"); lockableObjectSets.Add (APIGuidFromString ("156BCF98-CFA6-4be0-BC2C-8252D640A9FB"), "Markup Styles"); lockableObjectSets.Add (APIGuidFromString ("5B6A4F99-C72D-4811-90A5-6D696E1AB51F"), "Surfaces"); lockableObjectSets.Add (APIGuidFromString ("258B2630-3098-48ea-8923-F712214FBDAE"), "MEP Systems"); lockableObjectSets.Add (APIGuidFromString ("13E263C8-692B-494b-84E3-2B4BD0A77332"), "Model View Options"); lockableObjectSets.Add (APIGuidFromString ("0E6DC7E2-5AFC-4309-AB31-2A790CF57A53"), "Operation Profiles"); lockableObjectSets.Add (APIGuidFromString ("08B4B9BB-3DD6-4ea1-A084-80D80B8B7742"), "Pen Tables"); lockableObjectSets.Add (APIGuidFromString ("4779D92D-ACFB-429d-91E5-1D585B9D2CE5"), "Profiles"); lockableObjectSets.Add (APIGuidFromString ("D13F8A89-2AEC-4c32-B04E-85A5393F9C47"), "Project Info"); lockableObjectSets.Add (ACAPI_TeamworkControl_FindLockableObjectSet ("PreferencesDialog"), "Project Preferences"); lockableObjectSets.Add (APIGuidFromString ("B83F2FD1-0AD4-4c41-A8EB-6D7558B0A120"), "Zone Categories"); lockableObjectSets.Add (APIGuidFromString ("50477294-5E20-4349-920B-EFC18BF54A0C"), "Building Materials"); GS::UniString lockableObjectSetName; if (!lockableObjectSets.Get (objectId, &lockableObjectSetName)) lockableObjectSetName = GS::UniString::Printf ("Unknown object {%T}", APIGuid2GSGuid (objectId).ToUniString ().ToPrintf ()); ACAPI_WriteReport ("=== Attention: Workspace reservation has been changed ===============", false); GS::UniString actionByUserStr (ownerId > 0 ? "reserved" : "released"); if (userInfoTable.ContainsKey (ownerId)) { if (ownerId == myUserId) { actionByUserStr.Append (" by me ("); actionByUserStr.Append (userInfoTable[ownerId].fullName); actionByUserStr.Append (")"); } else { actionByUserStr.Append (" by "); actionByUserStr.Append (userInfoTable[ownerId].fullName); } } GS::UniString reportString = GS::UniString::Printf ("= %T got %T", lockableObjectSetName.ToPrintf (), actionByUserStr.ToPrintf ()); ACAPI_WriteReport (reportString.ToCStr ().Get (), false); return NoError; } /* LockableReservationChangeHandler */
void highlightElementByID(){ GSErrCode err; API_NeigID neigID; API_Element element; elementidlist eleMsg; API_StoryCmdType storyCmd; char buffer[256]; readDelimitedFrom(getClientSocket(), &eleMsg); Int32 nItem = eleMsg.guid_size(); bool add = true; //Clear all selected elements err = ACAPI_Element_Select(NULL, 0, add); API_Neig** neigHdl = reinterpret_cast<API_Neig**> (BMAllocateHandle(nItem * sizeof(API_Neig), ALLOCATE_CLEAR, 0)); API_Neig neig; for (int i = 0; i < nItem; i++){ BNZeroMemory(&element, sizeof(API_Element)); element.header.guid = APIGuidFromString(eleMsg.guid(i).c_str()); err = ACAPI_Element_Get(&element); if (err != NoError) { sprintf(buffer, ErrID_To_Name(err)); ACAPI_WriteReport(buffer, true); return; } err = ACAPI_Goodies(APIAny_ElemTypeToNeigID, (void*)element.header.typeID, &neigID); (*neigHdl)[i].neigID = neigID; (*neigHdl)[i].guid = element.header.guid; (*neigHdl)[i].flags = API_NeigFlg_Normal; (*neigHdl)[i].elemPartType = APINeigElemPart_None; } //Add the current element to the selection err = ACAPI_Element_Select(neigHdl, nItem, add); if (err != NoError) { sprintf(buffer, ErrID_To_Name(err)); ACAPI_WriteReport(buffer, true); return; } BMhKill((GSHandle*)&neigHdl); /* * In order for the GUI update, we need to create an element, and then * delete it. * By doing this we can have the selected element highlighted */ API_Element wallElement; API_ElementMemo memo; BNZeroMemory(&memo, sizeof(API_ElementMemo)); BNZeroMemory(&wallElement, sizeof(API_Element)); wallElement.header.typeID = API_WallID; wallElement.header.layer = 1; err = ACAPI_Element_GetDefaults(&wallElement, &memo); if (err != NoError) { ErrorBeep("ACAPI_Element_GetMemo", err); return; } err = ACAPI_Element_Create(&wallElement, &memo); if (err != NoError){ ErrorBeep("ACAPI_Element_Create", err); sprintf(buffer, ErrID_To_Name(err)); ACAPI_WriteReport(buffer, true); } ACAPI_DisposeElemMemoHdls(&memo); API_Elem_Head* test; test = &wallElement.header; ACAPI_Element_Delete(&test, 1); }