Bentley二次开发教程22-文件及模型管理-材质、图层

2024-04-25 02:12

本文主要是介绍Bentley二次开发教程22-文件及模型管理-材质、图层,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

材质

材质主要用于对元素进行材质贴图,以表现实际的材料样式。材质表中包含材质表,材质面板以及材质。而其属性记录了反射等多种属性以表达实际材质效果。
在这里插入图片描述

创建材质

当我们需要创建自定义的材质时,对应的,需要依次创建材质表,材质面板以及材质。

public static void CreateMaterial(string unparsed)
{DgnFile dgnFile = Session.Instance.GetActiveDgnFile();//获得当前激活的dgn文件DgnModel dgnModel = Session.Instance.GetActiveDgnModel();//获得当前激活的dgn模型MaterialTable createdTable = new MaterialTable(dgnFile);//声明材料表createdTable.Name = "Table1";//设置材料表名称createdTable.Description = "Description1";//设置材料表描述信息Material savedMaterial1 = new Material(dgnModel);//声明材料savedMaterial1.Name = "Material5";//设置材料名称PaletteInfo pInfo1 = savedMaterial1.GetPalette();//设置材料所在面板信息pInfo1.Name = "SavedPalette";//设置材料所在面板名称pInfo1.SetSource(dgnFile.GetDocument().GetMoniker());//设置面板源文件域pInfo1.Type = PaletteInfo.PaletteType.Dgn;//设置面板类型MaterialManager.SaveMaterial(null, savedMaterial1, dgnFile);//保存材料信息Material savedMaterial2 = new Material(dgnModel);//声明材料savedMaterial2.Name = "Material7";//设置材料名称PaletteInfo pInfo2 = savedMaterial2.GetPalette();//设置材料所在面板信息pInfo2.Name = "SavedPalette";//设置材料所在面板名称pInfo2.SetSource(dgnFile.GetDocument().GetMoniker());//设置面板源文件域pInfo2.Type = PaletteInfo.PaletteType.Dgn;//设置面板类型MaterialManager.SaveMaterial(null, savedMaterial2, dgnFile);//保存材料信息MaterialId materialId = new MaterialId("Material5");//声明材料IDcreatedTable.AddAssignment(new MaterialAssignment(materialId, "Level 1", 0, createdTable.GetRenderDgn()));//将材料分配信息添加到表中createdTable.AddAssignment(new MaterialAssignment(new MaterialId("Material7"), "Level 10", 4, createdTable.GetRenderDgn()));//将材料分配信息添加到表中MaterialManager.SaveTable(createdTable);//保存材料表
}

本案例中,首先创建了一个名为"Table1"的材质表,然后创建了一个名为"SavedPalette"的材质面板,最后分别创建了名为"Material7"与"Material5",并将材质与图层绑定。
在这里插入图片描述

图层

图层材质赋予

使用材质的方式一般来说主要是将材质赋予元素,该方法即可将材质与图层绑定后赋予元素。主要的步骤为在文件中创建指定名称的图层,完成后创建材料,并将材料与图层绑定。命令执行完毕后当给元素赋予该图层后,其材质即为创建的材质。

public static void CreateLevelWithMaterial(string unparsed)
{                        DgnFile dgnFile = Session.Instance.GetActiveDgnFile();//获得当前激活的dgn文件DgnModel dgnModel = Session.Instance.GetActiveDgnModel();//获得当前激活的dgn模型  string levelName = "Level 1 :0";//声明字符串指代图层名称FileLevelCache flc = dgnModel.GetFileLevelCache();//获得模型中的图层文件缓存flc.Write();//将文件写入缓存LevelHandle level = flc.GetLevelByName(levelName);//根据图层名称获得图层句柄if (!level.IsValid)//判断图层是否有效(若图层无效在则为真){EditLevelHandle elh = flc.CreateLevel(levelName);//声明名为levelName的图层CreateMaterial(unparsed);//声明材料                }
}public static void CreateMaterial(string unparsed)
{DgnFile dgnFile = Session.Instance.GetActiveDgnFile();//获得当前激活的dgn文件DgnModel dgnModel = Session.Instance.GetActiveDgnModel();//获得当前激活的dgn模型MaterialTable createdTable = new MaterialTable(dgnFile);//声明材料表createdTable.Name = "Table1";//设置材料表名称createdTable.Description = "Description1";//设置材料表描述信息Material savedMaterial1 = new Material(dgnModel);//声明材料savedMaterial1.Name = "Material5";//设置材料名称PaletteInfo pInfo1 = savedMaterial1.GetPalette();//设置材料所在面板信息pInfo1.Name = "SavedPalette";//设置材料所在面板名称pInfo1.SetSource(dgnFile.GetDocument().GetMoniker());//设置面板源文件域pInfo1.Type = PaletteInfo.PaletteType.Dgn;//设置面板类型MaterialManager.SaveMaterial(null, savedMaterial1, dgnFile);//保存材料信息Material savedMaterial2 = new Material(dgnModel);//声明材料savedMaterial2.Name = "Material7";//设置材料名称PaletteInfo pInfo2 = savedMaterial2.GetPalette();//设置材料所在面板信息pInfo2.Name = "SavedPalette";//设置材料所在面板名称pInfo2.SetSource(dgnFile.GetDocument().GetMoniker());//设置面板源文件域pInfo2.Type = PaletteInfo.PaletteType.Dgn;//设置面板类型MaterialManager.SaveMaterial(null, savedMaterial2, dgnFile);//保存材料信息MaterialId materialId = new MaterialId("Material5");//声明材料IDcreatedTable.AddAssignment(new MaterialAssignment(materialId, "Level 1", 0, createdTable.GetRenderDgn()));//将材料分配信息添加到表中createdTable.AddAssignment(new MaterialAssignment(new MaterialId("Material7"), "Level 10", 4, createdTable.GetRenderDgn()));//将材料分配信息添加到表中MaterialManager.SaveTable(createdTable);//保存材料表
}

在这里插入图片描述
在这里插入图片描述

图层颜色及线形样式赋予

若我们需要创建一个颜色及线形样式的图层时,需要使用LevelDefinitionLineStyle( )的构造函数实现。大致的流程为:创建图层后对图层的颜色与线形样式进行设置并应用于指定名称的图层上。

public static void CreateLevelWithColorAndLineStyle(string unparsed)
{DgnFile dgnFile = Session.Instance.GetActiveDgnFile();//获得当前激活的dgn文件DgnModel dgnModel = Session.Instance.GetActiveDgnModel();//获得当前激活的dgn模型            string levelName = "TestLevel";//声明字符串指代图层名称FileLevelCache flc = dgnModel.GetFileLevelCache();//获得模型中的图层文件缓存flc.Write();//将文件写入缓存LevelHandle level = flc.GetLevelByName(levelName);//根据图层名称获得图层句柄if (!level.IsValid)//判断图层是否有效(若图层无效在则为真){EditLevelHandle elh = flc.CreateLevel(levelName);//声明名为levelName的图层LevelDefinitionColor color = new LevelDefinitionColor(4, dgnFile);//声明图层颜色定义elh.SetByLevelColor(color);//设置图层颜色elh.ByLevelWeight = 2;//设置图层线宽int num = LineStyleManager.GetNumberFromName("Simple 05 V2", dgnFile, true, true);//获得名为Simple 05 V2的线样式索引值LevelDefinitionLineStyle lineStyle = new LevelDefinitionLineStyle(num, null, dgnFile);//声明图层线样式索引elh.SetByLevelLineStyle(lineStyle);//设置图层线样式}
}

在本案例中,首先创建了一个名为"TestLevel"的图层,然后设置图层颜色为颜色索引值为4的黄色,设置名为"Simple 05 V2"的样式为该图层的线形样式。
在这里插入图片描述
在这里插入图片描述

这篇关于Bentley二次开发教程22-文件及模型管理-材质、图层的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/933453

相关文章

Ubuntu中远程连接Mysql数据库的详细图文教程

《Ubuntu中远程连接Mysql数据库的详细图文教程》Ubuntu是一个以桌面应用为主的Linux发行版操作系统,这篇文章主要为大家详细介绍了Ubuntu中远程连接Mysql数据库的详细图文教程,有... 目录1、版本2、检查有没有mysql2.1 查询是否安装了Mysql包2.2 查看Mysql版本2.

Elasticsearch 在 Java 中的使用教程

《Elasticsearch在Java中的使用教程》Elasticsearch是一个分布式搜索和分析引擎,基于ApacheLucene构建,能够实现实时数据的存储、搜索、和分析,它广泛应用于全文... 目录1. Elasticsearch 简介2. 环境准备2.1 安装 Elasticsearch2.2 J

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

Linux卸载自带jdk并安装新jdk版本的图文教程

《Linux卸载自带jdk并安装新jdk版本的图文教程》在Linux系统中,有时需要卸载预装的OpenJDK并安装特定版本的JDK,例如JDK1.8,所以本文给大家详细介绍了Linux卸载自带jdk并... 目录Ⅰ、卸载自带jdkⅡ、安装新版jdkⅠ、卸载自带jdk1、输入命令查看旧jdkrpm -qa

Java使用Curator进行ZooKeeper操作的详细教程

《Java使用Curator进行ZooKeeper操作的详细教程》ApacheCurator是一个基于ZooKeeper的Java客户端库,它极大地简化了使用ZooKeeper的开发工作,在分布式系统... 目录1、简述2、核心功能2.1 CuratorFramework2.2 Recipes3、示例实践3

springboot简单集成Security配置的教程

《springboot简单集成Security配置的教程》:本文主要介绍springboot简单集成Security配置的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录集成Security安全框架引入依赖编写配置类WebSecurityConfig(自定义资源权限规则

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

MySQL Workbench 安装教程(保姆级)

《MySQLWorkbench安装教程(保姆级)》MySQLWorkbench是一款强大的数据库设计和管理工具,本文主要介绍了MySQLWorkbench安装教程,文中通过图文介绍的非常详细,对大... 目录前言:详细步骤:一、检查安装的数据库版本二、在官网下载对应的mysql Workbench版本,要是

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

通过Docker Compose部署MySQL的详细教程

《通过DockerCompose部署MySQL的详细教程》DockerCompose作为Docker官方的容器编排工具,为MySQL数据库部署带来了显著优势,下面小编就来为大家详细介绍一... 目录一、docker Compose 部署 mysql 的优势二、环境准备与基础配置2.1 项目目录结构2.2 基