找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 159|回复: 0

[每日一码] ObjectARX 修改选中实体的颜色

[复制链接]

1

主题

0

回帖

43

积分

管理员

积分
43
发表于 2024-3-14 20:08:07 | 显示全部楼层 |阅读模式
  1. ////修改选中实体的颜色  
  2. static void TESTchangecolorcmd()
  3. {  
  4.         ads采用name ssname;  
  5.         ////选择多个实体,传递NULL,让用户自己来选  
  6.         acedSSGet(NULL,NULL,NULL,NULL,ssname);  
  7.         long len;  
  8.         acedSSLength(ssname,&len);  
  9.         CString ss;  
  10.         ss.Format(采用T("已选中%d个实体"),len);  
  11.         acutPrintf(ss);  
  12.         ads采用name entname;  
  13.         AcDbObjectId id;  
  14.         AcDbEntity* ent = NULL;  
  15.         CString strName;  
  16.         int nNewColor;  
  17.         ////弹出颜色选择对话框  
  18.         if(acedSetColorDialog(nNewColor,Adesk::kFalse,256) != IDOK){  
  19.                 return;  
  20.         }   
  21.         for(int i=0;i<len;i++)  
  22.         {  
  23.             if(acedSSName(ssname, i, entname) == RTNORM)  
  24.                 {  
  25.                         ////根据名称得到ID  
  26.                         acdbGetObjectId(id,entname);  
  27.                         ////以写模式,根据ID索引到对象,并打开ENTITY  
  28.                         acdbOpenObject(ent,id,AcDb::OpenMode::kForWrite);  
  29.                         strName.Format(采用T("%d"),ent->colorIndex());  
  30.                         acutPrintf(采用T("\n"));  
  31.                         acutPrintf(strName);  
  32. /////如果只限制直线  
  33. /*if(ent->isKindOf(AcDbLine::desc())){
  34. acutPrintf(采用T("\nfind line"));
  35. ent->setColorIndex(nNewColor);
  36. ent->close();
  37. }*/  
  38.                         ent->setColorIndex(nNewColor);  
  39.                         ent->close();  
  40.                 }  
  41.         }  
  42.         acedSSFree(ssname);  
  43. }  
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|膜结构网

GMT+8, 2025-1-11 00:46 , Processed in 0.088677 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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