2.6.11 草图模式
草图模式
草图模式是指用草图的显示方法来重新渲染场景中的模型数据。目前提供线框+白膜和线框+纹理两种显示模式。
草图模式主要包括添加(创建)、更新和删除3种操作。
下图是草图模式效果:
参数说明
草图模式可配置的参数如下表所示:
配置项 | 配置说明 | 值类型 | 备注 |
---|---|---|---|
OptionsTypeName | 操作配置项类名 | string | OutLineOptions代表草图模式 |
ShowMode | 显示模式 | int | 草图的显示模式。0-正常显示,1-白膜+线框模式,2-线框模式。默认0 |
LayersID | 图层ID列表 | int列表 | 草图操作模型图层对象。-1则代表所有模型图层,若为多个图层,可使用xx,xx,xx 此种格式。图层Id可以通过图层对象的GetLayerId()方法获取 |
代码调用示例
Javascript调用
//创建草图操作
var outLineOperationPtr = null;
function CreateOutLineOperation() {
if( outLineOperationPtr == null ){
var tlo = map.CreateOperationOptions("");//创建配置类型,操作类型的配置
tlo.AddConfig("OptionsTypeName", "OutLineOptions");//添加草图配置项
tlo.AddConfig("LayersID", -1);//处理图层ID。-1代表处理所有图层;"x,x,x"用,分隔代表分析指定id图层
tlo.AddConfig("ShowMode", "1");//显示模式。0-正常模式;1-白膜+线框模式;2-线框模式。默认0
outLineOperationPtr = map.CreateOperation("OutLineOperation", tlo);//创建草图操作
map.AddOperation(outLineOperationPtr);//添加操作
}
else{
UpdateOutLine(1);
}
}
//更新草图操作
function UpdateOutLine(strMode) {
if ( null != outLineOperationPtr ) {
var tlo = map.CreateOperationOptions("");//创建配置类型,操作类型的配置
tlo.AddConfig("OptionsTypeName", "OutLineOptions");//添加草图配置项
tlo.AddConfig("LayersID", gModelLayer.GetLayerID());//处理图层ID。-1代表处理所有图层;"x,x,x"用,分隔代表分析指定id图层
tlo.AddConfig("ShowMode", strMode );//显示模式。0-正常模式;1-白膜+线框模式;2-线框模式。默认0
outLineOperationPtr.UpdateOperationOptions(tlo);
}
}
//更新草图操作复位
function UpdateOutLineOperation() {
if ( null != outLineOperationPtr ) {
var tlo = map.CreateOperationOptions("");//创建配置类型,操作类型的配置
tlo.AddConfig("OptionsTypeName", "OutLineOptions");//添加草图配置项
tlo.AddConfig("LayersID", -1 );//处理图层ID。-1代表处理所有图层;"x,x,x"用,分隔代表分析指定id图层
tlo.AddConfig("ShowMode", 0 );//显示模式。0-正常模式;1-白膜+线框模式;2-线框模式。默认0
outLineOperationPtr.UpdateOperationOptions(tlo);//更新操作
}
}
//移除草图操作
function RemoveOutLineOperation() {
if (null != outLineOperationPtr) {
map.RemoveOperation(outLineOperationPtr);//移除更新操作
outLineOperationPtr = null;
}
}
C++调用
BaseObjectCOMLib::ILayerObjectPtr outLineOperationPtr;//更新对象
void COutLineOptionsDlg::OnBnClickedCreateoutlineoperation()
{
if( outLineOperationPtr == NULL )
{
ConfigOptionsCOMLib::IOperationOptionPtr tlo = map->CreateOperationOptions("");//创建配置类型,操作类型的配置
tlo->AddConfig("OptionsTypeName", "OutLineOptions");//添加草图配置项
tlo->AddConfig("LayersID", "-1");//处理图层ID。-1代表处理所有图层;"x,x,x"用,分隔代表分析指定id图层
tlo->AddConfig("ShowMode", "1");//显示模式。0-正常模式;1-白膜+线框模式;2-线框模式。默认0
outLineOperationPtr = map->CreateOperation("OutLineOperation", tlo);//创建草图操作
map->AddOperation(outLineOperationPtr);//添加操作
}
else
{
UpdateOutLine( "1" );
}
}
void COutLineOptionsDlg::OnBnClickedUpdateoutline2()
{
UpdateOutLine("2");
}
void COutLineOptionsDlg::OnBnClickedUpdateoutlineoperation()
{
if ( NULL != outLineOperationPtr )
{
ConfigOptionsCOMLib::IOperationOptionPtr tlo = map->CreateOperationOptions("");//创建配置类型,操作类型的配置
tlo->AddConfig("OptionsTypeName", "OutLineOptions");//添加草图配置项
tlo->AddConfig("LayersID", "-1" );//处理图层ID。-1代表处理所有图层;"x,x,x"用,分隔代表分析指定id图层
tlo->AddConfig("ShowMode", "0" );//显示模式。0-正常模式;1-白膜+线框模式;2-线框模式。默认0
outLineOperationPtr->UpdateOperationOptions(tlo);//更新操作
}
}
void COutLineOptionsDlg::OnBnClickedRemoveoutlineoperation()
{
if (NULL != outLineOperationPtr)
{
map->RemoveOperation(outLineOperationPtr);//移除操作
outLineOperationPtr = NULL;
}
}
void COutLineOptionsDlg::UpdateOutLine(std::string strMode)
{
if ( NULL != outLineOperationPtr )
{
ConfigOptionsCOMLib::IOperationOptionPtr tlo = map->CreateOperationOptions("");//创建配置类型,操作类型的配置
tlo->AddConfig("OptionsTypeName", "OutLineOptions");//添加草图配置项
tlo->AddConfig("LayersID","-1");//处理图层ID。-1代表处理所有图层;"x,x,x"用,分隔代表分析指定id图层
tlo->AddConfig("ShowMode", strMode.c_str() );//显示模式。0-正常模式;1-白膜+线框模式;2-线框模式。默认0
outLineOperationPtr->UpdateOperationOptions(tlo);//更新操作
}
}
C#调用
//创建草图操作
IOperationObject outLineOperationPtr = null;
private void CreateOutLineOperation_Click(object sender, EventArgs e)
{
if (outLineOperationPtr == null)
{
var tlo = map.CreateOperationOptions("");//创建配置类型,操作类型的配置
tlo.AddConfig("OptionsTypeName", "OutLineOptions");//添加草图配置项
tlo.AddConfig("LayersID", -1);//处理图层ID。-1代表处理所有图层;"x,x,x"用,分隔代表分析指定id图层
tlo.AddConfig("ShowMode", "1");//显示模式。0-正常模式;1-白膜+线框模式;2-线框模式。默认0
outLineOperationPtr = map.CreateOperation("OutLineOperation", tlo);//创建草图操作
map.AddOperation(outLineOperationPtr);//加入操作
}
else
{
UpdateOutLine("1");
}
}
//更新白膜线框有纹理模式
private void UpdateOutLine2_Click(object sender, EventArgs e)
{
UpdateOutLine("2");
}
//复位草图模式
private void UpdateOutLineOperation_Click(object sender, EventArgs e)
{
if (null != outLineOperationPtr)
{
var tlo = map.CreateOperationOptions("");//创建配置类型,操作类型的配置
tlo.AddConfig("OptionsTypeName", "OutLineOptions");//添加矢量相交配置项
tlo.AddConfig("LayersID", -1);//处理图层ID。-1代表处理所有图层;"x,x,x"用,分隔代表分析指定id图层
tlo.AddConfig("ShowMode", 0);//显示模式。0-正常模式;1-白膜+线框模式;2-线框模式。默认0
outLineOperationPtr.UpdateOperationOptions(tlo);
}
}
//移除草图操作
private void RemoveOutLineOperation_Click(object sender, EventArgs e)
{
if (null != outLineOperationPtr)
{
map.RemoveOperation(outLineOperationPtr);
outLineOperationPtr = null;
}
}
//更新草图操作添加
private void UpdateOutLine(string strMode )
{
if ( null != outLineOperationPtr )
{
var tlo = map.CreateOperationOptions("");//创建配置类型,操作类型的配置
tlo.AddConfig("OptionsTypeName", "OutLineOptions");//添加草图配置项
tlo.AddConfig("LayersID", modelLayer.GetLayerID());//处理图层ID。-1代表处理所有图层;"x,x,x"用,分隔代表分析指定id图层
tlo.AddConfig("ShowMode", strMode );//显示模式。0-正常模式;1-白膜+线框模式;2-线框模式。默认0
outLineOperationPtr.UpdateOperationOptions(tlo);
}
}