找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 832|回复: 3

[每日一码] 设置3DSOLID实体每个面的颜色

[复制链接]

已领礼包: 13个

财富等级: 恭喜发财

发表于 2016-9-3 16:28:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

[it618postdisplay>0]
  1. void TestBrep(void)
  2. {
  3.     Adesk::Int32 len;
  4.     ads_name  ssname0;
  5.   struct resbuf *buffer;
  6.     buffer = acutBuildList(-4, _T("<AND"),
  7.               RTDXF0, _T("3DSOLID"),
  8.               -4, _T("AND>"), RTNONE);
  9.     acutPrintf(_T("\nSelect a box:"));
  10.     acedSSGet(NULL, NULL, NULL, buffer, ssname0);
  11.     acutRelRb(buffer);
  12.   if (RTNORM == acedSSLength(ssname0, &len))
  13.     {
  14.         ads_name  ent;
  15.         AcDbObjectId entId;
  16.     for(long k = 0; k < len; k++)
  17.         {
  18.             acedSSName(ssname0, k, ent);
  19.             acdbGetObjectId(entId, ent);

  20.       settingDifferentColorToEachFace(entId);
  21.         }
  22.         acedSSFree(ssname0);
  23.     }
  24. }

[/it618postdisplay]

  1. void settingDifferentColorToEachFace(AcDbObjectId solidId)
  2. {
  3.   AcCmColor specialColor;
  4.   AcDb3dSolid* pSolid;
  5.     if (Acad::eOk == acdbOpenObject(pSolid, solidId, AcDb::kForRead))
  6.     {
  7.         AcDbFullSubentPath path(solidId, AcDbSubentId());
  8.     AcBrBrep brep;
  9.         AcBr::ErrorStatus bs = brep.setSubentPath(path);
  10.         if (bs != AcBr::eOk)
  11.             return;
  12.    //Initialize the BrepFace traverser
  13.         AcBrBrepFaceTraverser bft;
  14.         bs = bft.setBrep(brep);
  15.         if (bs != AcBr::eOk)
  16.             return;

  17.         AcArray<AcDbSubentId> arrSubentId;
  18.         // Traverse all faces
  19.         for (;!bft.done();bft.next())
  20.         {
  21.             AcBrFace face;
  22.             bs = bft.getFace(face);   
  23.             if (bs != Acad::eOk)
  24.             {
  25.                 acutPrintf(L"\ngetFace failed");
  26.                 break;
  27.             }
  28.             AcDbFullSubentPath    Path(kNullSubent);
  29.             AcDbSubentId          subentId;
  30.             AcBr::ErrorStatus bss = face.getSubentPath(Path);
  31.             subentId = Path.subentId();

  32.             arrSubentId.append(subentId);
  33.         }

  34.         pSolid->upgradeOpen();
  35.         for (int i = 0; i < arrSubentId.length(); i++)
  36.         {
  37.       specialColor.setColorIndex(i);
  38.             pSolid->setSubentColor(arrSubentId,specialColor);
  39.         }
  40.         pSolid->downgradeOpen();
  41.     }

  42.     pSolid->close();
  43. }



论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 3199个

财富等级: 富可敌国

发表于 2016-9-3 16:39:53 | 显示全部楼层
3DSOLID实体每个面的颜色 真能单独设定吗? 截个图上来可以么? 真的不敢相信

不懂ObjectARX ,楼主能封装下 ,发出来,CAD2012-2015通用的

点评

[attachimg]54733[/attachimg]  详情 回复 发表于 2016-9-3 16:48
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 13个

财富等级: 恭喜发财

 楼主| 发表于 2016-9-3 16:48:10 | 显示全部楼层
lucas3 发表于 2016-9-3 16:39
3DSOLID实体每个面的颜色 真能单独设定吗? 截个图上来可以么? 真的不敢相信

不懂ObjectARX ,楼主能封 ...

0.jpg
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3532个

财富等级: 富可敌国

发表于 2016-9-4 21:56:35 | 显示全部楼层
学习学习再学习!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-23 03:56 , Processed in 0.291727 second(s), 38 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表