【问题描述】:
用户提供的一个网格(Mesh)元素,设置元素颜色不起作用,总是保持自己的一个颜色。如下图所示,元素颜色为红色,但网格元素却显示为紫色。
communities.bentley.com/.../ColoredMesh.dgn
【原因分析】:
网格元素底层的工作机制是相当复杂的,每个网格顶点可保存四个方面的信息:①几何信息(即空间坐标点);②颜色;③法向量(用户渲染时确定光线的方向);④uv参数(用于材质映射)。用户提供的这个网格元素就是因为除了保存有几何信息外还有颜色信息,而自身的颜色是超越DGN中元素的颜色设置的。这种网格元素往往是从其他软件中导入的网格,MS自身的网格工具集中是没有提供创建这种带有颜色的网格的手段的。当然,如下文章中也描述了如何通过编程创建类似的彩色网格的方法:
创建各顶点颜色不同的网格元素(Creating Vertex-Colored Mesh)
通过键入命令analyze element可以查看其底层信息如下:
每一类信息都是通过一个具体值的数组和一个面片(Facet)索引数组组成的。MicroStation软件未提供交互式操作②③④类信息的手段。所以,我们只能通过编程来删除颜色信息解决该问题。
【解决方案】:
1.将如下压缩包解压到MS的Mdlapps文件夹(例如:C:\Program Files\Bentley\MicroStation 2023\MicroStation\Mdlapps)下:
communities.bentley.com/.../MeshTools.zip
2.打开DGN文件(最好要备份,不负责使用该程序引起的文件损坏)
3.键入MDL LOAD MeshTools并回车装载程序
4.键入MeshTools RemoveColor并回车删除所有带有颜色信息的网格元素自带的颜色信息。此删除不可恢复,请事先备份DGN文件!!!
【注,本MeshTools程序在MS2023下开发,也能用于MSCE的较高版本】