天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 6|回复: 0

拷贝 Copy

[复制链接]
  • TA的每日心情
    开心
    昨天 15:23
  • 签到天数: 69 天

    [LV.6]常住居民II

    410

    主题

    167

    回帖

    2704

    积分

    管理员

    积分
    2704
    发表于 2024-6-22 09:46:18 | 显示全部楼层 |阅读模式
    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;
    }

     

     

     

     

    拷贝 Copy
    中国膜结构网打造全中国最好的膜结构综合平台 ,统一协调膜结构设计,膜结构施工,膜材采购,膜材定制,膜结构预算全方位服务。 中国空间膜结构协会合作单位。
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池|

    GMT+8, 2024-7-1 05:46 , Processed in 0.056705 second(s), 22 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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