关注公众号及时获取文章更新

Retrieving textures via Navisworks API (no solution)

关于Revit API 获取材质贴图位图 bitMap(可行)

代码如下:

string[] targetMaterialNames = {// A standard Revit material, with // textures in standard paths. "Brick, Common",// A material with a single image from // another non-material library path"Local Path Material"};void FindTextureBitmapPaths( Document doc ){// Find materialsFilteredElementCollector fec = new FilteredElementCollector( doc );fec.OfClass( typeof( Material ) );IEnumerable<Material> targetMaterials = fec.Cast<Material>().Where<Material>( mtl => targetMaterialNames.Contains( mtl.Name ) );foreach( Material material in targetMaterials ){// Get appearance asset for readElementId appearanceAssetId = material.AppearanceAssetId;AppearanceAssetElement appearanceAssetElem = doc.GetElement( appearanceAssetId )as AppearanceAssetElement;Asset asset = appearanceAssetElem.GetRenderingAsset();// Walk through all first level assets to find // connected Bitmap properties.  Note: it is // possible to have multilevel connected // properties with Bitmaps in the leaf nodes.  // So this would need to be recursive.int size = asset.Size;for( int assetIdx = 0; assetIdx < size; assetIdx++ ){AssetProperty aProperty = asset[assetIdx];if( aProperty.NumberOfConnectedProperties < 1 )continue;// Find first connected property.  // Should work for all current (2018) schemas.  // Safer code would loop through all connected// properties based on the number provided.Asset connectedAsset = aProperty.GetConnectedProperty( 0 ) as Asset;// We are only checking for bitmap connected assets. if( connectedAsset.Name == "UnifiedBitmapSchema" ){// This line is 2018.1 & up because of the // property reference to UnifiedBitmap// .UnifiedbitmapBitmap.  In earlier versions,// you can still reference the string name // instead: "unifiedbitmap_Bitmap"AssetPropertyString path = connectedAsset[UnifiedBitmap.UnifiedbitmapBitmap] as AssetPropertyString;// This will be a relative path to the // built -in materials folder, addiitonal // render appearance folder, or an // absolute path.TaskDialog.Show( "Connected bitmap", String.Format( "{0} from {2}: {1}", aProperty.Name, path.Value, connectedAsset.LibraryName ) );}}}}

能获取到计算机中位图 bitmap 的路径,但通常是相对路径,C:\Program Files (x86)\Common Files\Autodesk Shared\Materials\Textures,这是Revit默认的材质库,当然用户也可以自定义渲染外观的路径;也会出现绝对路径的情况,也就是贴图文件既不在默认材质库文件夹中,也不在用户添加的渲染外观路径下。

对于绝对路径,我们可以直接找到它,而对于相对路径,我需要做一些逻辑判断,首先判断默认的材质库中是否有该文件,如果没有,再读取 Revit.ini (Initialization File 初始化文件)文件来找到用户定义的其他渲染外观路径,接着在这些路径下找到对应的贴图文件。

Revit.ini 路径: C:\Users\11204\AppData\Roaming\Autodesk\Revit\Autodesk Revit 2018

Revit Navisworks 二次开发—获取材质贴图相关推荐

  1. UG\NX二次开发 获取曲线上某个位置的点坐标、切线矢量、主法线矢量、副法线矢量 UF_MODL_ask_curve_props

    文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan 简介: UG\NX二次开发 获取曲线上某个位置的点坐标.切线矢量.主法线矢量.副法线矢量 U ...

  2. UG\NX二次开发 获取相切面的三种方法

    文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan 简介: UG\NX二次开发 获取相切面的三种方法 方法1: 使用NX Open C++ 的面 ...

  3. UG\NX二次开发 获取当前工作部件 UF_ASSEM_ask_work_part

    文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan 简介: UG\NX二次开发 获取当前工作部件 UF_ASSEM_ask_work_part ...

  4. NX二次开发 获取基准坐标系特征的坐标原点、基准轴、基准面对象 UF_MODL_ask_datum_csys_components

    简介: NX二次开发 获取基准坐标系特征的坐标原点.基准轴.基准面对象 UF_MODL_ask_datum_csys_components. 代码: #include "me.hpp&quo ...

  5. UG\NX二次开发 获取工作部件下所有对象的类型和子类型 UF_OBJ_ask_type_and_subtype

    文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan 简介: UG\NX二次开发 获取工作部件下所有对象的类型和子类型,使用函数 UF_OBJ_a ...

  6. NX二次开发-获取面的法向向量UF_MODL_ask_face_data

    NX二次开发-获取面的法向向量UF_MODL_ask_face_data NX9+VS2012#include <uf.h> #include <uf_modl.h> #inc ...

  7. NX二次开发 UFUN获得所有图纸页 UF_DRAW_ask_drawings

    NX二次开发 UFUN获得所有图纸页 UF_DRAW_ask_drawings //NX8.0+VS2010 #include <uf_assem.h> #include <uf_p ...

  8. Revit二次开发 获取模型截面线、截面轮廓

    描述 获取Revit模型的截面线.横切面线.截面轮廓. 用途 用于获取模型的截面线.横切面线.截面轮廓. 实现方式 创建视图平面: 从视图平面获取轮廓线: 获取平面标高处的截面线. 效果 示例 /// ...

  9. Revit的二次开发带来的赢利点和后续故事

    BIM已经从星星之火发展为燎然之势,一般单位设立的BIM部门均可用Revit来创建BIM模型.再此基础上,建设行业产业链上的业主.设计院.土建和机电建设单位.各种咨询公司.消防相关机构等纷纷都在挖掘B ...

最新文章

  1. 在Linux中打印函数调用堆栈【原创】
  2. Spark创建RDD的四种方式(一):从集合(内存)中创建 RDD代码示例
  3. gRPC in ASP.NET Core 3.x - gRPC 简介(2)
  4. 根据中心点、半径长度和角度画点
  5. 2019年五一赛赛后总结
  6. 最近服务器总被webshell攻击,木马也非常猖獗
  7. 效率倍升:逐浪HMS主题大师1.2-全渠道自动打包、快速传送、锁屏提取、资源审计,移动主题设计辅助利器(全面支持华V米O)
  8. Mysql 最全教程
  9. 【校招 --阶段一 操作系统基础】进程地址空间
  10. excel之筛选、删除技巧
  11. 数据结构—双向链表的基本操作
  12. 计算机应用能力考试ppt2003,全国专业技术人员计算机应用能力考试_PPT_2003_题库版.docx...
  13. 如何查找视频文件 android,如何扫描出android手机中所有的视频文件
  14. 2021年会议平板十大品牌榜中榜,十大会议平板品牌销量排行榜
  15. BNN Pytorch代码阅读笔记
  16. react项目实战五 个人中心页面
  17. BurpSuite配置抓取HTTPS数据包
  18. “偷梁换柱”的库打桩机制
  19. 薄饼又薄又软,卷菜吃太过瘾了
  20. 程序在Nginx/k8s下如何获取客户端真实IP,带工具类

热门文章

  1. vue使用Ant design的input输入框,去掉边框和获取焦点时的边框
  2. c语言指定变量地址,C语言中 “_at()” 特殊地址定位详解
  3. 软件系统开发到哪里做
  4. 做教育的人,做基业长青的事情
  5. 云计算:中兴通讯的“新引擎”
  6. 原生or HTML5
  7. 中投民生:今日A股大面积飘绿;注册制独领风骚
  8. 沙盘Sandboxie命令行(Windows)
  9. 纷享销客主体公司发生工商变更:金蝶成为大股东,长山兴投资退出
  10. 2022年1月医疗机器人1月份盘点与分析