License delivery maintenance is planned for Saturday, July 26, between 12:00 and 20:00 CEST. During this time, you may experience outages or limited availability across our services, including BIMcloud SaaS, License Delivery, Graphisoft ID (for customer and company management), Graphisoft Store, and BIMx Web Viewer. More details…
2021-04-28
10:07 PM
- last edited on
2021-09-14
09:39 AM
by
Noemi Balogh
Solved! Go to Solution.
2021-05-19 03:59 PM
Konstantin wrote:In Section or Elevation windows there are no doors and windows, you can see only section elements instead (type is API_SectElemID). The parent of the section elements are the doors/windows/etc., see this code:
In my plugin I get doors :GS::Array<API_Guid> elementList; ACAPI_Element_GetElemList(API_DoorID, &elementList, APIFilt_OnVisLayer);In 3D window view or Ground Floor I successfully getting the data list, but in Elevations my doors list is empty.
How can I get data in Elevations windows or other(Worksheets/Welcome ...)? Can I somehow get a document and get all the information I need from it, for example, a door?
static GS::Array<API_Guid> GetElemListByTypeFromSectionElevation (API_ElemTypeID elemTypeId) { GS::Array<API_Guid> result; GS::Array<API_Guid> sectElemList; ACAPI_Element_GetElemList (API_SectElemID, §ElemList, APIFilt_OnVisLayer); for (const API_Guid& sectElemGuid : sectElemList) { API_Element elem = {}; elem.header.guid = sectElemGuid; ACAPI_Element_Get (&elem); if (elem.sectElem.parentID == elemTypeId) { result.Push (elem.sectElem.parentGuid); } } return result; } // Usage API_WindowInfo currWindowInfo = {}; ACAPI_Database (APIDb_GetCurrentWindowID, &currWindowInfo); static const GS::HashSet<API_WindowTypeID> sectElemOnlyWindows = { APIWind_SectionID, APIWind_ElevationID, APIWind_InteriorElevationID }; GS::Array<API_Guid> elementList; if (sectElemOnlyWindows.Contains (currWindowInfo.typeID)) { elementList = GetElemListByTypeFromSectionElevation (API_DoorID); } else { ACAPI_Element_GetElemList (API_DoorID, &elementList, APIFilt_OnVisLayer); }
2021-04-29 02:49 PM
'STR#' ID_ADDON_MENU "Strings for the Menu" { /* [ 1] */ "Example AddOn Command... ^E3 ^ES ^EE ^EI ^ED ^ET ^10001" }You can check the complete list here:
2021-04-29 06:06 PM
Viktor wrote:Thanks a lot, it really works. But now I have a new question.
You can specify in the grc file where your command will be available. The magically looking tokens (E3, ES, etc.) are for this purpose.
'STR#' ID_ADDON_MENU "Strings for the Menu" { /* [ 1] */ "Example AddOn Command... ^E3 ^ES ^EE ^EI ^ED ^ET ^10001" }You can check the complete list here:
http://download.graphisoft.com/ftp/techsupport/documentation/developer_docs/APIDevKit51/APIHTMLLibra...
GS::Array<API_Guid> elementList; ACAPI_Element_GetElemList(API_DoorID, &elementList, APIFilt_OnVisLayer);In resources, I used "^ES^EE^EI^ED^EW^E3^EL" and I can call my plugin. In 3D window view or Ground Floor I successfully getting the data list, but in Elevations my doors list is empty.
2021-04-29 07:44 PM
2021-05-19 03:59 PM
Konstantin wrote:In Section or Elevation windows there are no doors and windows, you can see only section elements instead (type is API_SectElemID). The parent of the section elements are the doors/windows/etc., see this code:
In my plugin I get doors :GS::Array<API_Guid> elementList; ACAPI_Element_GetElemList(API_DoorID, &elementList, APIFilt_OnVisLayer);In 3D window view or Ground Floor I successfully getting the data list, but in Elevations my doors list is empty.
How can I get data in Elevations windows or other(Worksheets/Welcome ...)? Can I somehow get a document and get all the information I need from it, for example, a door?
static GS::Array<API_Guid> GetElemListByTypeFromSectionElevation (API_ElemTypeID elemTypeId) { GS::Array<API_Guid> result; GS::Array<API_Guid> sectElemList; ACAPI_Element_GetElemList (API_SectElemID, §ElemList, APIFilt_OnVisLayer); for (const API_Guid& sectElemGuid : sectElemList) { API_Element elem = {}; elem.header.guid = sectElemGuid; ACAPI_Element_Get (&elem); if (elem.sectElem.parentID == elemTypeId) { result.Push (elem.sectElem.parentGuid); } } return result; } // Usage API_WindowInfo currWindowInfo = {}; ACAPI_Database (APIDb_GetCurrentWindowID, &currWindowInfo); static const GS::HashSet<API_WindowTypeID> sectElemOnlyWindows = { APIWind_SectionID, APIWind_ElevationID, APIWind_InteriorElevationID }; GS::Array<API_Guid> elementList; if (sectElemOnlyWindows.Contains (currWindowInfo.typeID)) { elementList = GetElemListByTypeFromSectionElevation (API_DoorID); } else { ACAPI_Element_GetElemList (API_DoorID, &elementList, APIFilt_OnVisLayer); }