admin 发表于 2024-3-14 20:08:07

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

////修改选中实体的颜色
static void TESTchangecolorcmd()
{
      ads采用name ssname;
      ////选择多个实体,传递NULL,让用户自己来选
      acedSSGet(NULL,NULL,NULL,NULL,ssname);
      long len;
      acedSSLength(ssname,&len);
      CString ss;
      ss.Format(采用T("已选中%d个实体"),len);
      acutPrintf(ss);

      ads采用name entname;

      AcDbObjectId id;
      AcDbEntity* ent = NULL;
      CString strName;
      int nNewColor;
      ////弹出颜色选择对话框
      if(acedSetColorDialog(nNewColor,Adesk::kFalse,256) != IDOK){
                return;
      }   
      for(int i=0;i<len;i++)
      {
            if(acedSSName(ssname, i, entname) == RTNORM)
                {
                        ////根据名称得到ID
                        acdbGetObjectId(id,entname);

                        ////以写模式,根据ID索引到对象,并打开ENTITY
                        acdbOpenObject(ent,id,AcDb::OpenMode::kForWrite);
                        strName.Format(采用T("%d"),ent->colorIndex());
                        acutPrintf(采用T("\n"));
                        acutPrintf(strName);


/////如果只限制直线
/*if(ent->isKindOf(AcDbLine::desc())){


acutPrintf(采用T("\nfind line"));
ent->setColorIndex(nNewColor);
ent->close();
}*/

                        ent->setColorIndex(nNewColor);
                        ent->close();
                }
      }
      acedSSFree(ssname);
}
页: [1]
查看完整版本: [每日一码] ObjectARX 修改选中实体的颜色