做cad二次开发的时候,有时会生成三维实体,例如生成3d的钢筋,但是使用3d生成的钢筋比较难看,可以使用下面代码对实体进行贴图,比如找一张铁锈的图片放在钢筋上,就会显示的比较生动


AcDbObjectId CBaseDwg::CreateMaterial(const CString & materialName, COLORREF clr, const CString & pictureFilePath, AcDbDatabase * pDb)
{if (NULL == pDb)pDb = acdbCurDwg();AcDbObjectId idMater = AcDbObjectId::kNull;AcDbDictionary* pMatDict = NULL;if (Acad::eOk != pDb->getMaterialDictionary(pMatDict, AcDb::kForWrite))return idMater;if (pMatDict->has(materialName)){pMatDict->getAt(materialName, idMater);}else{AcDbMaterial* pmatObj = new AcDbMaterial;pMatDict->setAt(materialName, pmatObj, idMater);//材质设置AcGiMaterialColor clrMat;clrMat.setMethod(AcGiMaterialColor::kOverride);clrMat.setFactor(1.0);clrMat.setColor(AcCmEntityColor(GetRValue(clr), GetGValue(clr), GetBValue(clr)));//添加图片AcGiImageFileTexture diffuseMapFile;diffuseMapFile.setSourceFileName(pictureFilePath);//diffuse mapAcGiMaterialMap diffuseMap;diffuseMap.setTexture(&diffuseMapFile);//控制贴图比例AcGeMatrix3d transform;transform.setToIdentity();transform.setToScaling(0.1);AcGiMapper mapper;mapper = diffuseMap.mapper();mapper.setTransform(transform);diffuseMap.setMapper(mapper);pmatObj->setDiffuse(clrMat, diffuseMap);pmatObj->setMode(AcGiMaterialTraits::kRealistic);double value = 1.0;AcGiMaterialMap opacityMap;pmatObj->opacity(value, opacityMap);pmatObj->setOpacity(20, opacityMap);//?pmatObj->close();}pMatDict->close();return idMater;
}void CBaseDwg::SetMaterialToEntity(const AcDbObjectId &entId, const AcDbObjectId & materialId)
{AcDbEntityPointer pointer;if (Acad::eOk != pointer.open(entId, AcDb::kForWrite))return;pointer->setMaterial(materialId, Adesk::kFalse);
}

函数里面有很多参数,这个要根据图片等细节去进行设置,可以考虑追加一个配置文件进行处理

ObjectARX-给cad实体贴图相关推荐

  1. 计算机CAD专业实训周志,cad实训报告总结(共7篇).doc

    cad实训报告总结(共7篇) cad实训报告总结(共7篇) 按照课程按排,我们进行了两周的CAD实训. 从上个学期的手工画图,到这个学期的电脑画图,感觉到先进的技术人们带来了快速和方便.上个学期的手工 ...

  2. 计算机辅助设计cad实训总结,cad实训的心得体会

    cad实训的心得体会 计算机辅助设计(Computer Aided Design)指利用计算机及其图形设备帮助设计人员进行设计工作.下面是小编为您整理了cad实训的心得体会,供大家参考. 为期一周的a ...

  3. 用ObjectArx进行CAD二次开发的准备工作

    用ObjectArx进行CAD二次开发的准备工作 1.CAD二次开发工具介绍: 2.本文主要介绍ObjectArx工具安装及下载,故此处不讲解VS和CAD的安装 3.有2中下载的资源,并且有安装好的V ...

  4. 基于CUDA实现立方体贴图 (Cubemaps) 转换为全景图 (Equirectangular Panorama)

    在立方体贴图空间内发射光线(视线),计算球面光线(视线)会击中哪个面的哪个像素的像素值,最终生成Equirectangular全景图. InitSceneTexture():先获取Cubemaps并将 ...

  5. airtestide 下载后打不开_微信收到CAD图纸打不开怎么办?2种方法教你手机CAD快速看图...

    现在很多人习惯于移动办公,可以在任意时间使用手机工作既方便,又快捷,但是如果我们的微信接收到CAD图纸打不开怎么办呢?如何在手机上看建筑图纸,或是进行手机CAD看图要如何做呢?微信收到CAD图纸打不开 ...

  6. Opengl-立方体贴图(天空盒子)

    立方体贴图就是一个包含了6个2D纹理的纹理,每个2D纹理都组成了立方体的一个面:一个有纹理的立方体.你可能会奇怪,这样一个立方体有什么用途呢?为什么要把6张纹理合并到一张纹理中,而不是直接使用6个单独 ...

  7. cad打开图纸流程图_如何一键打开超大CAD图纸,进行CAD快速看图?

    当我们遇到一个超大的CAD图纸,想要快速查看里面的内容时,一般的CAD软件会在你打开超大图纸的时候告知你:图纸太大,需要收费!这时候该怎么办呢?如何进行CAD快速看图呢?今天教你CAD快速看图新方式. ...

  8. OpenGL cubemap 立方体贴图实例

    OpenGL cubemap 立方体贴图 先上图,再解答. 完整主要的源代码 源代码剖析 先上图,再解答. 完整主要的源代码 #include <glad/glad.h> #include ...

  9. WebGL 利用FBO完成立方体贴图。

    这篇主要记录WebGL的一些基本要点,顺便也学习下如何使用FBO与环境贴图.先看下效果图(需要支持WebGL,Chrome,火狐,IE11). 主要实现过程如下,先用FBO输出当前环境在立方体纹理中, ...

最新文章

  1. python(1):数据类型/string/list/dict/set等
  2. CIKERS Shane 20190530
  3. p标题/p能设置字体的大小和颜色
  4. opencv学习笔记3
  5. 我所理解的JVM(三):字节码的执行
  6. IoC 容器和 Dependency Injection 模式[转]
  7. android7.1获取存储权限,Android外部存储
  8. 所有图形得面积和周长公式
  9. 作为空降领导,该如何做?
  10. 微信小程序加入购物车动画
  11. linux 模拟误码率,误码率BER计算原理及仿真输出
  12. LeetCode第一题——曼哈顿距离
  13. 测试工程师如何提高工作效率
  14. 微软需要Twitter来对抗Google
  15. 一文解析:安装和运行Qlik Sense的系统要求及浏览器支持
  16. 【Python 实战基础】如何绘制直方图分析张三成绩数据
  17. 计算机考证上传照片说明
  18. 什么是浮点型?什么是单精度浮点数(float)以及双精度浮点数(double)?
  19. inject类型丢失问题
  20. git分支开发练习以及创建文件提交到版本库

热门文章

  1. Windows下100个CMD常用命令(2)
  2. Java ArrayList详解
  3. 从零到部署:用 Vue 和 Express 实现迷你全栈电商应用(最终篇)
  4. js - 爬虫的实现
  5. PCB地与金属机壳用阻容连接
  6. 分析一种极低成本的220V转5V电路——阻容降压电路
  7. 文字设计的基本原则,要求与过程
  8. 百度地图实现轨迹回放(显示到达时间)
  9. 一二三四五六七八九十
  10. AE速度曲线与运动曲线