右侧树形结构的类型由API_NavigatorMapID结构控制
typedef enum {
API_UndefinedMap = 0, //未定义
API_ProjectMap = 1, //项目树状图
API_PublicViewMap = 2, //视图映射
API_MyViewMap = 3, //TW中自己的视图
API_LayoutMap = 4, //图册
API_PublisherSets = 5 //发布器
} API_NavigatorMapID;
先获取项目树状图下边的子节点
下边是一个获取叶子节点的函数:
void GetLeafNode(API_NavigatorItem item, GS::Array<API_NavigatorItem>& Items)
{
API_NavigatorItem navItem = {};
navItem.guid = item.guid;
navItem.mapId = item.mapId;
GS::Array<API_NavigatorItem> navItems;
ACAPI_Navigator(APINavigator_GetNavigatorChildrenItemsID, &navItem, nullptr, &navItems);
if (navItems.GetSize() > 0)
{
for (int i = 0; i < navItems.GetSize(); i++)
{
GetLeafNode(navItems[i], Items);
}
}
else
{
API_NavigatorItem ItemTemp = {};
ACAPI_Navigator(APINavigator_GetNavigatorItemID, &navItem.guid, &ItemTemp);
Items.Push(ItemTemp);
}
}
下边是获取项目树中无子节点的节点
API_NavigatorSet set;
BNZeroMemory(&set, sizeof(API_NavigatorSet));
set.mapId = API_ProjectMap;
err = ACAPI_Navigator(APINavigator_GetNavigatorSetID, &set, nullptr);
if (err == NoError)
{
API_NavigatorItem navItem = {};
navItem.guid = set.rootGuid;
navItem.mapId = set.mapId;
GS::Array<API_NavigatorItem> projectLeafItems;
GetLeafNode(navItem, projectLeafItems);
}
拿到不可再分的所有节点数据之后我们可以根据节点类型将节点进行分类处理。
std::vector<API_NavigatorItem> vecFloorItem, vecDetailItem, vecSectionItem, vecElevationItem;
for (int i = 0; i < projectLeafItems.GetSize(); i++)
{
if (projectLeafItems[i].itemType == API_StoryNavItem) //API_StoryNavItem //楼层
vecFloorItem.push_back(projectLeafItems[i]);
if (projectLeafItems[i].itemType == API_SectionNavItem) //API_SectionNavItem //剖面
vecSectionItem.push_back(projectLeafItems[i]);
if (projectLeafItems[i].itemType == API_DetailDrawingNavItem) //API_DetailDrawingNavItem //详图
vecDetailItem.push_back(projectLeafItems[i]);
if (projectLeafItems[i].itemType == API_ElevationNavItem) //API_ElevationNavItem //立面
vecElevationItem.push_back(projectLeafItems[i]);
}
结构类型定义详见:
typedef enum {
API_UndefinedNavItem = 0,
API_ProjectNavItem = 1,
API_StoryNavItem = 2,
API_SectionNavItem = 3,
API_DetailDrawingNavItem = 4,
API_PerspectiveNavItem = 5,
API_AxonometryNavItem = 6,
API_ListNavItem = 7,
API_ScheduleNavItem = 8,
API_TocNavItem = 9,
API_CameraNavItem = 10,
API_CameraSetNavItem = 11,
API_InfoNavItem = 12,
API_HelpNavItem = 13,
API_LayoutNavItem = 14,
API_MasterLayoutNavItem = 15,
API_BookNavItem = 16,
API_MasterFolderNavItem = 17,
API_SubSetNavItem = 18,
API_TextListNavItem = 19,
API_ElevationNavItem = 20,
API_InteriorElevationNavItem = 21,
API_WorksheetDrawingNavItem = 22,
API_DocumentFrom3DNavItem = 23,
API_FolderNavItem = 24,
API_DrawingNavItem = 25
} API_NavigatorItemTypeID;
其他比如视图映射等可参考项目树形结构图类似的处理方式。
1361

被折叠的 条评论
为什么被折叠?



