TA的每日心情![](source/plugin/dsu_paulsign/img/emot/kx.gif) | 开心 昨天 15:23 |
---|
签到天数: 69 天 [LV.6]常住居民II
管理员
- 积分
- 2704
|
int EntityCopy()
{
resbuf *rb=ads_getargs();
if (!rb)
return RSRSLT;
AcDbObjectIdArray mIdArr;
AcDbObjectId id;
Acad::ErrorStatus es;
while (rb)
{
if (rb->restype==RTENAME)
{
es=acdbGetObjectId(id,rb->resval.rlname);
if (es == eOk)
{
mIdArr.append(id);
}
}else if (rb->restype==RTPICKS)
{
long len,i;
if (ads_sslength(rb->resval.rlname,&len) == RTNORM)
{
ads_name mEname;
AcDbObjectId id;
Acad::ErrorStatus es;
for (i=0;i<len;i++){
ads_ssname(rb->resval.rlname,i,mEname);
es=acdbGetObjectId(id,mEname);
if (es==eOk)
{
mIdArr.append(id);
}
}
}
}
rb = rb->rbnext;
}
if (mIdArr.isEmpty())
return RSRSLT;
AcDbObjectId mCurSpaceId;
AcDbObject *pObj;
if (acdbOpenObject(pObj,mIdArr[0],kForRead) != eOk)
return RSRSLT;
mCurSpaceId = pObj->ownerId();
pObj->close();
AcGeVector3d mTransVec = AcGePoint3d(100.0,100.0,0.0) - AcGePoint3d::kOrigin;
AcGeMatrix3d xForm;
xForm.setToTranslation(mTransVec);
AcDbIdMapping iMap;
es = acdbCurDwg()->deepCloneObjects(mIdArr,mCurSpaceId,iMap);
if (es == eOk)
{
ads_name ent;
AcDbIdMappingIter iMapIter(iMap);
for (;!iMapIter.done();iMapIter.next())
{
AcDbIdPair idPair;
if(iMapIter.getMap(idPair))
{
if (idPair.isPrimary())
{
AcDbObjectId id=idPair.value();
AcDbEntity *pEnt2;
es = acdbOpenObject(pEnt2,id,kForWrite,false);
if (es == eOk)
{
pEnt2->transformBy(xForm);
AcDbVoidPtrArray *pReactors;
pReactors = pEnt2->reactors();
int length = pReactors->length();
void *pSomething;
for (int i = 0; i < length; ++i)
{
pSomething = (AcDbObject*) pReactors->at(i);
if (acdbIsPersistentReactor(pSomething)) {
AcDbObjectId persObjId = acdbPersistentReactorObjectId(pSomething);
AcDbObject *pReactor;
if (Acad::eOk != acdbOpenObject(pReactor, persObjId, AcDb::kForRead)) {
acutPrintf(_T("\nCannot get reactor."));
continue;
}
if (pReactor->isKindOf(AcDbGroup::desc())) {
pEnt2->removePersistentReactor(pReactor->objectId());
}
pReactor->close();
}
}
pEnt2->close();
}
}
}
}
}
ads_rett();
return RSRSLT;
} |
|