找回密码
 立即注册

QQ登录

只需一步,快速开始

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

OBJECT ARX 修改选中实体的颜色 选择集的使用

[复制链接]

1

主题

0

回帖

37

积分

管理员

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

本版积分规则

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

GMT+8, 2025-1-4 12:42 , Processed in 0.122933 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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