acdbOpenObject(pGroup, groupObjectId, AcDb::kForWrite); for (int i = 0; i < idArr->length(); i++) {
groupObjectId = idArr->at(i); pGroup->append(groupObjectId); }
pGroup->close(); return TRUE; }
另一个
Acad::ErrorStatus CDrawFunction::createGroup(CString groupname,AcDbObjectIdArray IdArray)
{
Acad::ErrorStatus es=Acad::eOk; AcDbDictionary *pGroupDict=NULL; AcDbGroup *pGroup=NULL;
if((es=acdbHostApplicationServices()->workingDatabase()->getGroupDictionary(pGroupDict,AcDb::kForWrite))!=Acad::eOk)
{
return es;
}
AcDbObjectId groupId;
es=pGroupDict->getAt(groupname,groupId); if(es==Acad::eInvalidKey) {
acutPrintf(\输入的词典名无效!\pGroupDict->close(); return es; }
else if(es==Acad::eKeyNotFound) {
pGroup=new AcDbGroup(\
if((es=pGroupDict->setAt(groupname,pGroup,groupId))!=Acad::eOk) {
pGroup->close();pGroupDict->close();return es; } }
else if(es==Acad::eOk ) {
if((es=acdbOpenObject(pGroup,groupId,AcDb::kForWrite))!=Acad::eOk) {
pGroupDict->close();return es; } }
for(int i=0;i pGroup->append(IdArray[i]); pGroup->setSelectable(FALSE); pGroupDict->close(); pGroup->close(); return es; }
旋转整个group
void CMyDatabase::rotationGroup(CString strGroupName ,CReiPoint ptRotation,double rotationAngle)
{
AcGePoint3d pt;
AcDbDictionary *pGroupDict;
acdbCurDwg()->getGroupDictionary(pGroupDict,AcDb::kForWrite); AcDbObjectId groupId; AcDbGroup *pGroup;
pt.x=ptRotation.x; pt.y=ptRotation.y; pt.z=ptRotation.z;
if(pGroupDict->getAt(strGroupName,groupId)==Acad::eOk) acdbOpenObject(pGroup,groupId,AcDb::kForWrite); else {
pGroupDict->close(); return; }
pGroupDict->close();
AcDbGroupIterator* pIter=pGroup->newIterator(); AcDbEntity* pEnt; AcDbObjectId objId;
pIter=pGroup->newIterator(); for(;!pIter->done();pIter->next()) {
objId=pIter->objectId();
acdbOpenAcDbEntity(pEnt,objId,AcDb::kForWrite);
rotationEntity(pEnt,pt,rotationAngle); pEnt->close(); }
delete pIter; pGroup->close(); }
新建一个图层
//==========================================================
功能:新建一个图层
参数:LayerName -- 图层名,LayerColor -- 颜色名
返回:图层ID
//==========================================================
AcDbObjectId CreateNewLayer(CString LayerName, AcCmColor LayerColor) {
// 获得当前图形数据库的符号表 AcDbLayerTable *pLayerTable;
acdbHostApplicationServices()->workingDatabase()->getSymbolTable(pLayerTable,