首页 > 其他分享 >Revit二次开发之 Material 分析

Revit二次开发之 Material 分析

时间:2023-07-27 20:45:57浏览次数:40  
标签:Blue Material material Green Red 二次开发 message Revit Append

对于revit来说,任何Element都可以包含一个或者多个Material,其通过方法:

public ICollection<ElementId> GetMaterialIds(
    bool returnPaintMaterials
)

获取指定元素的材质集合,如果为true,则返回“绘制”工具指定给元素面的材质ID。如果为false,则返回通过材质的几何体或复合结构层与材质关联的id。

Material element =this.Document.GetElement(materialNode.MaterialId) as Material;

通过

GetElement函数获取残值对象

 

对于一个材质,他包含标识、图形、外观、物理、热度等信息。

private void GetMaterialInformation(Material material)
{//对应作色信息
   message.Append(string.Format("\nColor: Red[{0}]; Green[{1}]; Blue[{2}]",
                   material.Color.Red, material.Color.Green, material.Color.Blue));

   //对应表面填充图案---前景
   FillPatternElement cutForegroundPattern = material.Document.GetElement(material.CutForegroundPatternId) as FillPatternElement;
   if (null != cutForegroundPattern)
   {
      message.Append("\nCut Foreground Pattern: " + cutForegroundPattern.Name);
      message.Append(string.Format("\nCut Foreground Pattern Color: Red[{0}]; Green[{1}]; Blue[{2}]",
                      material.CutForegroundPatternColor.Red, material.CutForegroundPatternColor.Green, material.CutForegroundPatternColor.Blue));
   }

   //对应表面填充图案--背景
   FillPatternElement surfaceForegroundPattern = material.Document.GetElement(material.SurfaceForegroundPatternId) as FillPatternElement;
   if (null != surfaceForegroundPattern)
   {
      message.Append("\nSurface Foreground Pattern: " + surfaceForegroundPattern.Name);
      message.Append(string.Format("\nSurface Foreground Pattern Color: Red[{0}]; Green[{1}]; Blue[{2}]",
                      material.SurfaceForegroundPatternColor.Red, material.SurfaceForegroundPatternColor.Green, material.SurfaceForegroundPatternColor.Blue));
   }

   //界面填充图案,背景
   FillPatternElement cutBackgroundPattern = material.Document.GetElement(material.CutBackgroundPatternId) as FillPatternElement;
   if (null != cutBackgroundPattern)
   {
      message.Append("\nCut Background Pattern: " + cutBackgroundPattern.Name);
      message.Append(string.Format("\nCut Background Pattern Color: Red[{0}]; Green[{1}]; Blue[{2}]",
                      material.CutBackgroundPatternColor.Red, material.CutBackgroundPatternColor.Green, material.CutBackgroundPatternColor.Blue));
   }

   //background surface pattern and pattern color of the material
   FillPatternElement surfaceBackgroundPattern = material.Document.GetElement(material.SurfaceBackgroundPatternId) as FillPatternElement;
   if (null != surfaceBackgroundPattern)
   {
      message.Append("\nSurface Background Pattern: " + surfaceBackgroundPattern.Name);
      message.Append(string.Format("\nSurface Background Pattern Color: Red[{0}]; Green[{1}]; Blue[{2}]",
                      material.SurfaceBackgroundPatternColor.Red, material.SurfaceBackgroundPatternColor.Green, material.SurfaceBackgroundPatternColor.Blue));
   }

   //some shading property of the material
   int shininess = material.Shininess;
   message.Append("\nShininess: " + shininess);
   int smoothness = material.Smoothness;
   message.Append("\nSmoothness: " + smoothness);
   int transparency = material.Transparency;
   message.Append("\nTransparency: " + transparency);

   TaskDialog.Show("Revit", message.ToString());
}

 

标签:Blue,Material,material,Green,Red,二次开发,message,Revit,Append
From: https://www.cnblogs.com/minhost/p/17585871.html

相关文章

  • CAD二次开发之 会旋转的彩色风车
      ///<summary>///会旋转的风车///</summary>[CommandMethod("RotatingFan")]publicvoidRotatingFan(){vardoc=Application.DocumentManager.MdiActiveDocument;vardb......
  • Revit二次开发之 PolymeshTopology
    PolymeshTopology 表示多边形网格拓扑的类,用于描述多边形的的图形信息。多边形网格的拓扑结构由多个点和由这些点形成的三角形面组成。每个方面由点阵列的三个索引来确定。多边形网格可以指定UV坐标,并且始终至少关联一个法线。非平面多边形网格可能有一个以上的法线可用;多边形网......
  • Revit二次开发-创建用户只读的共享参数
      在族环境里面绑定共享参数,并且用户在属性面板不可修改参数值[Transaction(TransactionMode.Manual)]publicclassSharedParameters:IExternalCommand{privatereadonlystring_desktop=Environment.GetFolderPath(Environment.SpecialFolder.Desk......
  • 微信个人号机器人,E云API二次开发
    **个人微信开发API****简要描述:**-登录E云平台**请求URL:**-http://域名地址/member/login-域名地址+开发者账号密码:后台系统自助开通**请求方式:**-POST**请求头Headers:**-Content-Type:application/json  **请求参数示例**```clike{"account":"18611......
  • 洞察漏洞管理平台二次开发
    之前搭建过由宜信安全部开源的漏洞管理平台-洞察(GitHub项目地址:https://github.com/creditease-sec)。但在实际的使用中发现存在不少需要优化的地方。后续宜信安全部也推出了洞察2.0版本,有很大的调整。然而不同企业的业务场景和需求都不同,很难做到面面俱到,对于定制开发的需求是......
  • 解决MaterializedMySQL原理的具体操作步骤
    MaterializedMySQL原理简介MaterializedMySQL是一种优化查询性能的技术,通过将查询结果存储在内存中,提供更快的数据检索。它基于MySQL数据库,利用了MySQL的存储引擎和查询优化器。MaterializedMySQL使用了一个称为MaterializedView(物化视图)的概念。物化视图是一个预先计算并存......
  • Revit开发之 IExportContext接口详细
    如果要将Revit模型输出为特定的格式,则需要利用revit的数据导出接口,在revit的二次开发中,给我们提供IExportContext接口。当前接口可用户模型轻量化导出、自定义格式导出等。编号 函数名称函数功能1Finish在导出过程的最后,处理完所有的实体后调用此防范2IsCanceled......
  • C#基于海康视觉VM4.1的二次开发框架源码,有多流程框架 运动控制卡 服务框架 需要有海康
    C#基于海康视觉VM4.1的二次开发框架源码,有多流程框架运动控制卡服务框架需要有海康VM的基础并且有海康威视VM开发狗原创文章,转载请说明出处,资料来源:http://imgcs.cn/5c/668913688222.html......
  • Winform 巨好看的控件库推荐:MaterialSkin.2
    MaterialSkin.2控件包是在MaterialSkin及基础上二次开发而来的,在原控件基础上修复了一些Bug,丰富了主题以及动画效果,效果非常好。MaterialSkin.2现在处于不活跃状态文中用MaterialSkin代替MaterialSkin.2Preview先贴几张演示Demo中的效果图:......Install在......
  • Sherlock视觉,支持任意相机,我们是专业Sherlock视觉 sherlock支持二次开发,同时也支持 VB
    Sherlock视觉,支持任意相机,我们是专业Sherlock视觉sherlock支持二次开发,同时也支持VB,VC,C#的界面封装,同时sherlock还可以是一个平台,就是可以自己写算法,插入其中。使用起来非常方便,功能也相对比较强大,主要是开发速度超级快(相比较halcon,opencv来讲,也是比较专业的检测软件)不会用的不......