[ARX]如何把一幅图像中所有的图形颜色变成白色
<P>如题</P> Acad::ErrorStatus changeColor(AcDbObjectId entId,Adesk::UInt16 newColor)<BR>{<BR> //打开对象,用于编辑<BR> AcDbEntity *pEntity;<BR> acdbOpenObject(pEntity,entId,AcDb::kForWrite);<BR> //设置新的颜色<BR> pEntity->setColorIndex(newColor);<BR> pEntity->close;<BR> return Acad::eOk;<BR>}<BR>改变一个实体的颜色如上图所示,改变全部的呢? 本帖最后由 作者 于 2006-10-27 22:29:49 编辑 <br /><br /> <P>要对 AcDbBlockTableRecord 中的 ACDB_MODEL_SPACE进行遍历啊</P><P>void TEST()<BR>{<BR> // TODO: Implement the command<BR> // 假设 newColor=1(红色)<BR> int newColor=1;<BR> // 取 模型空间=pMS<BR> AcDbBlockTable *pBlockTable;<BR> Acad::ErrorStatus es;<BR> acdbHostApplicationServices()->workingDatabase()->getSymbolTable(pBlockTable,AcDb::kForRead);<BR> AcDbBlockTableRecord *pMS;<BR> pBlockTable->getAt(ACDB_MODEL_SPACE,pMS,AcDb::kForRead);<BR> pBlockTable->close();</P>
<P> // 新建迭代器<BR> AcDbBlockTableRecordIterator *pIter=NULL;<BR> pMS->newIterator(pIter);<BR> if (pIter==NULL)<BR> {<BR> acutPrintf("\n** Error on the newIterator...");<BR> pMS->close();<BR> return;<BR> }<BR> // 遍历迭代器中的 Entity 来 改变颜色<BR> for(pIter->start();!pIter->done();pIter->step())<BR> {<BR> acutPrintf("\n****");<BR> AcDbEntity *pEnt=NULL;<BR> // 得到 Entity=pEnt 为 读<BR> pIter->getEntity(pEnt,AcDb::kForRead);<BR> if(pIter==NULL)<BR> continue;<BR> // 将状态 升级<BR> if(pEnt->upgradeOpen()!=Acad::eOk)<BR> {<BR> acutPrintf("\n** one object can't upgradeOpen");<BR> pEnt->close();<BR> continue;<BR> }<BR> // 改变颜色<BR> es=pEnt->setColorIndex(newColor);<BR> if(es!=Acad::eOk)<BR> acutPrintf("\none object can't change the color");<BR> pEnt->close();<BR> }</P>
<P> delete pIter;<BR> pMS->close();<BR>}<BR></P> <P>谢谢楼上的兄弟</P> <P>更简单的方法是用AcedCommandh函数调用AUTOCAD的change命令.</P>
<P> </P> <P>楼上的兄弟能给个代码看吗?</P> 这不是全选就可以了吗?
页:
[1]