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);
    }
}

results matching ""

    No results matching ""