<*小诗>
SuperMap iObjects c++提供了动态标绘模块,包含了标号库管理功能,定义了基本图元、点标号、线面标号等标号对象,提供了编辑标号功能。下面就如何绘制标绘对象做个介绍。
同样的,标绘对象是存在cad数据集里面的,所以需要提前准备一个可编辑的cad图层。
主要使用到的类:
标号库管理(UGGOLibraryManager):标号库管理功能用于管理标号库及标号库中的标号信息。标号库通过UGGOLibraryManager类进行设置和管理。标号库中的标号信息则由UGGOLibrary类进行保存和管理。负责标号库的获取、设置,标号库中标号的查询。
\include\Geometry3D\GraphicObject\UGGOLibraryManager.h);
//标号库路径
UGString strJYLibPath = _U("E:/SymbolLib/JY.plot");
UGString strTYLibPath = _U("E:/SymbolLib/TY.plot");
UGString strModelLibPath = _U("E:/SymbolLib/ModelLibrary.sym");
//获取标号库管理类对象
UGGOLibraryManager* pLibManager = UGGOLibraryManager::GetInstance();
if (NULL == pLibManager)
{
return;
}
//添加标号库
UGint nJYLibId = pLibManager->AddGOLibrary(strJYLibPath);
UGint nTYLibId = pLibManager->AddGOLibrary(strTYLibPath);
//添加模型库
pLibManager->AddMarkerLibs(strModelLibPath);
标绘对象提供了标绘点标号、线面标号、图元的一系列属性设置。比如:线宽、线色、衬线类型、衬线宽及衬线颜色等;点标号也可以设置随图缩放、注记、旋转及显示方式切换等属性。
:\include\Geometry3D\GraphicObject\UGGraphicObject.h);
添加标绘对象分为两种方式:
一种是直接构造标绘对象,通过UGRecordset记录集,往里面添加记录;
void CreateGraphicObject(UGRecordset *pRecordset)
{
UGGraphicObject *pGeo = new UGGraphicObject();
UGPoint3Ds pts3D;
pts3D.Add(UGPoint3D (116.3, 39.9, 0));
pGeo->SetGeometryShape(421, 10100, pts3D);
//将创建对象放到记录集里
pRecordset->AddNew(pGeo);
pRecordset->Update();
}
二、通过鼠标交互式创建
ActionGraphicObject
void Action2D(UGMapEditorWnd *pMapEditorWnd)
{
ActionGraphicObject action;
action.action = UGC::UGDrawParamaters::uaEdit;
action.param1 = 421;
action.param2 = 10100;
pMapEditorWnd->SetActionGraphicObject(UGC::UGDrawParamaters::uaEdit,action);
}
到这里结束,标绘对象就可以随心所欲的绘制啦;