设为首页收藏本站

中国膜结构网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

膜结构车棚
膜结构车棚膜结构资质国产膜材 膜结构网中国膜结构协会
查看: 172|回复: 4

arx 动态块

[复制链接]
  • TA的每日心情
    开心
    2021-6-23 14:19
  • 签到天数: 1543 天

    [LV.Master]伴坛终老

    发表于 2021-2-8 00:05 | 显示全部楼层 |阅读模式
    / (C) Copyright 2002-2007 by Autodesk, Inc.
    //
    // Permission to use, copy, modify, and distribute this software in
    // object code form for any purpose and without fee is hereby granted,
    // provided that the above copyright notice appears in all copies and
    // that both that copyright notice and the limited warranty and
    // restricted rights notice below appear in all supporting
    // documentation.
    //
    // AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.
    // AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF
    // MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE.  AUTODESK, INC.
    // DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE
    // UNINTERRUPTED OR ERROR FREE.
    //
    // Use, duplication, or disclosure by the U.S. Government is subject to
    // restrictions set forth in FAR 52.227-19 (Commercial Computer
    // Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii)
    // (Rights in Technical Data and Computer Software), as applicable.
    //

    //-----------------------------------------------------------------------------
    //----- acrxEntryPoint.cpp
    //-----------------------------------------------------------------------------
    #include "StdAfx.h"
    #include <AcDbAssocNetwork.h>
    #include <AcDbAssocVariable.h>
    #include <dbdimassoc.h>
    #include "resource.h"

    //-----------------------------------------------------------------------------
    #define szRDS _RXST("")


    //-----------------------------------------------------------------------------
    //----- ObjectARX EntryPoint
    class CTestAssocApp : public AcRxArxApp {

    public:
        CTestAssocApp () : AcRxArxApp () {}

        virtual AcRx::AppRetCode On_kInitAppMsg (void *pkt) {
            // TODO: Load dependencies here

            // You *must* call On_kInitAppMsg here
            AcRx::AppRetCode retCode =AcRxArxApp::On_kInitAppMsg (pkt) ;

            // TODO: Add your initialization code here

            return (retCode) ;
        }

        virtual AcRx::AppRetCode On_kUnloadAppMsg (void *pkt) {
            // TODO: Add your code here

            // You *must* call On_kUnloadAppMsg here
            AcRx::AppRetCode retCode =AcRxArxApp::On_kUnloadAppMsg (pkt) ;

            // TODO: Unload dependencies here

            return (retCode) ;
        }

        virtual void RegisterServerComponents () {
        }

        static void ListVarsInNetwork(const AcDbAssocNetwork *pNet)
        {
            AcDbObjectIdArray idsActions = pNet->getActions();
            for (int i = 0; i < idsActions.length(); i++) {
                AcDbObjectPointer<AcDbAssocAction> pAction(idsActions[i],AcDb::kForRead);
                if (pAction.openStatus() == Acad::eOk) {
                    AcDbAssocNetwork  *pNetSub = AcDbAssocNetwork::cast(pAction.object());
                    AcDbAssocVariable *pVar = AcDbAssocVariable::cast(pAction.object());
                    if (pNetSub)  {
                        ListVarsInNetwork(pNetSub);
                    }  else if (pVar) {
                        acutPrintf(_T("\nVariable Name=%s Value=%s"),
                            pVar->name().kACharPtr(), pVar->expression().kACharPtr());
                    }
                }
            }
        }

        static int GetVars(const AcDbAssocNetwork *pNet, AcStringArray &names, AcDbObjectIdArray &ids)
        {
            AcDbObjectIdArray idsActions = pNet->getActions();
            for (int i = 0; i < idsActions.length(); i++) {
                AcDbObjectPointer<AcDbAssocAction> pAction(idsActions[i],AcDb::kForRead);
                if (pAction.openStatus() == Acad::eOk) {
                    AcDbAssocVariable *pVar = AcDbAssocVariable::cast(pAction.object());
                    if (pVar) {
                        names.append(pVar->name());
                        ids.append(pVar->objectId());
                    }
                }
            }
            return ids.length();
        }

        //
        //  Command list all AssocVariable
        //
        static void TestAssocListAssocVars(void)
        {
            AcDbObjectId idNet = AcDbAssocNetwork::getInstanceFromDatabase(acdbCurDwg(),true);
            AcDbObjectPointer<AcDbAssocNetwork> pNet(idNet,AcDb::kForRead);
            if (pNet.openStatus() != Acad::eOk) return;
            ListVarsInNetwork(pNet.object());
        }

        //
        // Command Add new AssocVariable or change existent
        //
        static void TestAssocAddAssocVar(void)
        {
            // Add your code for command TestAssoc.AddAssocVar here
            Acad::ErrorStatus es;
            AcDbDatabase *pCurDb = acdbCurDwg();
            AcDbObjectId idNet = AcDbAssocNetwork::getInstanceFromDatabase(pCurDb,true);
            AcDbObjectPointer<AcDbAssocNetwork> pNetMain(idNet,AcDb::kForRead);
            if (pNetMain.openStatus() != Acad::eOk) return;
            AcDbObjectIdArray ids = pNetMain->getActions();
            AcDbObjectId idNetSub;
            if (ids.length() == 0) {
                AcDbAssocNetwork *pNetSub = new AcDbAssocNetwork();
                if (pNetMain->upgradeOpen() == Acad::eOk) {
                    if (pCurDb->addAcDbObject(idNetSub,pNetSub) == Acad::eOk) {
                        pNetSub->addAction(idNetSub,true);
                        pNetSub->close();
                    } else {
                        delete pNetSub;
                    }
                    pNetMain->downgradeOpen();
                }
            } else {
                idNetSub = ids[0];
            }
            ACHAR name[512], val[512];
            if (acedGetString(TRUE,_T("Variable name: "), name) != RTNORM ||
                acedGetString(TRUE,_T("Variable expression: "), val) != RTNORM) {
                    return;
            }
            AcDbObjectPointer<AcDbAssocNetwork> pNet(idNetSub,AcDb::kForWrite);
            if (pNet.openStatus() != Acad::eOk) return;
            AcString nameStr = name, valStr = val, errorMsg;
            AcStringArray sVarNames;
            AcDbObjectIdArray idsVars;
            GetVars(pNet.object(), sVarNames, idsVars);
            int ivar = 0;

            if (sVarNames.find(name, ivar)) {
                // Variable exist - change it
                AcDbObjectPointer<AcDbAssocVariable> pVar(idsVars[ivar], AcDb::kForWrite);
                if (pVar.openStatus() == Acad::eOk) {
                    if (pVar->validateNameAndExpression(name,val,errorMsg) != Acad::eOk) {
                        acutPrintf(_T("\nError %s"), errorMsg.kACharPtr());
                        return;
                    }

                    if ((es = pVar->setExpression(valStr,_T(""),true,true,errorMsg,true)) != Acad::eOk) {
                        acutPrintf(_T("\npVar->setExpression(valStr))=%s error=%s"),\
                            acadErrorStatusText(es), errorMsg.kACharPtr());
                        return;
                    }
                }
            } else {
                AcDbAssocVariable *ppVar = new AcDbAssocVariable();
                AcDbObjectId idVar;
                if (pCurDb->addAcDbObject(idVar,ppVar) == Acad::eOk) {
                    ppVar->close();
                    pNet->addAction(idVar,true);
                } else {
                    delete ppVar; return;
                }

                AcDbObjectPointer<AcDbAssocVariable> pVar(idVar, AcDb::kForWrite);
                if (pVar.openStatus() == Acad::eOk) {
                    if (pVar->validateNameAndExpression(name,val,errorMsg) != Acad::eOk) {
                        acutPrintf(_T("\npVar->validateNameAndExpression(name,val,errorMsg) =  %s"), errorMsg.kACharPtr());
                        pVar->close();
                        pNet->removeAction(idVar,true);
                        return;
                    }

                    if ((es = pVar->setName(nameStr,true)) != Acad::eOk) {
                        acutPrintf(_T("\npVar->setName(nameStr,true)=%s error=%s"),\
                            acadErrorStatusText(es), errorMsg.kACharPtr());
                        pVar->close();
                        pNet->removeAction(idVar,true);
                        return;
                    }

                    if ((es = pVar->setExpression(valStr,_T(""),true,true,errorMsg,true)) != Acad::eOk) {
                        acutPrintf(_T("\npVar->setExpression(valStr))=%s error=%s"),\
                            acadErrorStatusText(es), errorMsg.kACharPtr());
                        pVar->close();
                        pNet->removeAction(idVar,true);
                        return;
                    }
                }

            }
        }

        // - TestAssoc.ChgBlockVar command (do not rename)
        static void TestAssocChgBlockVar(void)
        {
            Acad::ErrorStatus es;
            ads_name en; ads_point p;
            AcString errorMsg;
            AcStringArray sVarNames;
            AcDbObjectIdArray idsVars;
            if (acedEntSel(_T("\nSelect dynamic block: "), en, p) != RTNORM) return;
            AcDbObjectId eidBref; acdbGetObjectId(eidBref, en);
            ACHAR name[512], val[512];
            if (acedGetString(TRUE,_T("Variable name: "), name) != RTNORM ||
                acedGetString(TRUE,_T("Variable expression: "), val) != RTNORM) {
                    return;
            }
            AcDbObjectId idNet;
            AcDbVoidPtrArray *reactors = NULL;
            {
                {
                    AcDbObjectPointer<AcDbBlockReference> pBref(eidBref, AcDb::kForRead);
                    if (pBref.openStatus() != Acad::eOk) return;
                    idNet = AcDbAssocNetwork::getInstanceFromObject(pBref.object()->blockTableRecord(),true);
                    reactors = pBref->reactors();
                }
                if (idNet.isNull()) {
                    acutPrintf(_T("\nNo variables")); return;
                }
                {
                    AcDbObjectPointer<AcDbAssocNetwork> pNetMain(idNet,AcDb::kForRead);
                    if (pNetMain.openStatus() != Acad::eOk) return;
                    AcDbObjectIdArray ids = pNetMain->getActions();
                    if (ids.length() == 0) return;
                    GetVars(pNetMain.object(), sVarNames, idsVars);
                }

            }
            int ivar = 0;
            if (sVarNames.find(name, ivar)) {
                // Variable exist - change it
                AcDbObjectPointer<AcDbAssocVariable> pVar(idsVars[ivar], AcDb::kForWrite);
                if (pVar.openStatus() == Acad::eOk) {
                    if (pVar->validateNameAndExpression(name,val,errorMsg) != Acad::eOk) {
                        acutPrintf(_T("\nError %s"), errorMsg.kACharPtr());
                        return;
                    }
                    if ((es = pVar->setExpression(val,_T(""),true,true,errorMsg,true)) != Acad::eOk) {
                        acutPrintf(_T("\npVar->setExpression(valStr))=%s error=%s"),
                            acadErrorStatusText(es), errorMsg.kACharPtr());
                        return;
                    }
                    AcDbEvalVariant valvar;
                    if ((es = pVar->evaluateExpression(valvar)) != Acad::eOk) {
                        acutPrintf(_T("\npVar->evaluateExpression(valvar))=%s error=%s"),
                            acadErrorStatusText(es), errorMsg.kACharPtr());
                        return;
                    }
                    if ((es = pVar->setValue(valvar)) != Acad::eOk) {
                        acutPrintf(_T("\npVar->setValue(valvar))=%s error=%s"),
                            acadErrorStatusText(es), errorMsg.kACharPtr());
                        return;
                    }
                    pVar->evaluateDependencies();
                }
                {
                    AcDbObjectPointer<AcDbBlockReference> pBref(eidBref, AcDb::kForWrite);
                    if (pBref.openStatus() != Acad::eOk) return;
                    pBref->assertWriteEnabled(true);
                }
                void *pSomething = NULL;
                if (reactors != NULL) {
                    for (int j = 0; j <= 1; j++) {
                        for (int i=0; i < reactors->length(); i++) {
                            pSomething = reactors->at(i);
                            AcDbObjectId idReact = acdbPersistentReactorObjectId(pSomething);
                            if (!idReact.isNull()) {
                                AcDbObjectPointer<AcDbDimAssoc> pDimAssoc(idReact,AcDb::kForWrite);
                                if (pDimAssoc.openStatus() != Acad::eOk) continue;
                                pDimAssoc->updateDimension(true,true);
                                AcDbObjectIdArray idsAss; pDimAssoc->getDimAssocGeomIds(idsAss);
                                if (idsAss.length() > 0) {
                                    pDimAssoc->updateAssociativity(idsAss);
                                }
                            }
                        }
                    }
                }

            } else {
                acutPrintf(_T("\nNot found variable %s"), name); return;            
            }
        }
    } ;

    //-----------------------------------------------------------------------------
    IMPLEMENT_ARX_ENTRYPOINT(CTestAssocApp)

    ACED_ARXCOMMAND_ENTRY_AUTO(CTestAssocApp, TestAssoc, ListAssocVars, ListAssocVars, ACRX_CMD_TRANSPARENT, NULL)
    ACED_ARXCOMMAND_ENTRY_AUTO(CTestAssocApp, TestAssoc, AddAssocVar, AddAssocVar, ACRX_CMD_TRANSPARENT, NULL)
    ACED_ARXCOMMAND_ENTRY_AUTO(CTestAssocApp, TestAssoc, ChgBlockVar, ChgBlockVar, ACRX_CMD_TRANSPARENT, NULL)
    回复


    http://www.mjgw.org/ 专业从事膜结构设计、制作加工、施工安装的膜结构工程服务,能够为客户提供专业的膜结构整体解决方案。做中国最好的膜结构综合服务平台。欢迎大家联系电话:198-7840-1958,QQ:463017170.
    相关关键词:膜结构车棚,膜结构车棚覆盖,膜结构车棚公司,膜结构车棚多少钱,膜结构车棚厂家,膜结构车棚价格,社区膜结构车棚,膜结构车棚膜布厂家 ,膜结构车棚哪家好,膜结构车棚多少钱一米,膜结构车棚报价,膜结构车棚哪里有,膜结构车棚定制,膜结构车棚安装,膜结构车棚设计,膜结构车棚电话,膜结构车棚加工,膜结构车棚膜布价格,膜结构车棚批发,膜结构车棚制造商,膜结构车棚生产厂家,膜结构车棚设计,膜结构车棚施工,膜结构车棚多少钱一平米,膜结构车棚订制,张拉膜车棚,张拉膜车棚覆盖,张拉膜车棚公司,张拉膜车棚多少钱,张拉膜车棚厂家,张拉膜车棚价格,社区张拉膜车棚,张拉膜车棚膜布厂家 ,张拉膜车棚哪家好,张拉膜车棚多少钱一米,张拉膜车棚报价,张拉膜车棚哪里有,张拉膜车棚定制,张拉膜车棚安装,张拉膜车棚设计,张拉膜车棚电话,张拉膜车棚加工,张拉膜车棚膜布价格,张拉膜车棚批发,张拉膜车棚制造商,张拉膜车棚生产厂家,张拉膜车棚设计,张拉膜车棚施工,张拉膜车棚多少钱一平米,张拉膜车棚订制,常用膜材品牌:德国杜肯、法国法拉利、德国海德斯、德国米乐、日本平岗、韩国秀博、比利时希运、美国赫虏伯、中国科宝、上海慧遥。

    使用道具 举报

  • TA的每日心情
    开心
    2021-6-23 14:19
  • 签到天数: 1543 天

    [LV.Master]伴坛终老

     楼主| 发表于 2021-2-8 00:06 | 显示全部楼层
    static void ABCV(void)
    {
        AcDbDatabase *pCurDb = acdbCurDwg();
        AcDbObjectId idCurSpace = pCurDb->currentSpaceId();
        ACHAR blockName[512] = _T("");
        if (acedGetString(TRUE, _T("\nEnter block name: "),blockName) != RTNORM)
            return;
        AcGePoint3d pIns;
        if (acedGetPoint(NULL,_T("\nEnter position: "),asDblArray(pIns)) != RTNORM)
            return;
        AcGeMatrix3d matUCS; acedGetCurrentUCS(matUCS); pIns.transformBy(matUCS);
        AcDbObjectId idBTR;
        {
            AcDbBlockTableRecordPointer pBTR(blockName, pCurDb, AcDb::kForRead);
            if (pBTR.openStatus() != Acad::eOk) {
                acutPrintf(_T("\nBlock <%s> not found!"), blockName);
                return;
            }
            idBTR = pBTR->objectId();
        }

        AcDbObjectPointer<AcDbBlockReference> pBref; pBref.create();
        pBref->setBlockTableRecord(idBTR);
        pBref->setPosition(pIns);
        AcDbObjectId idBref;
        {
            AcDbBlockTableRecordPointer pBTRCurSpace(idCurSpace, AcDb::kForWrite);
            if (pBTRCurSpace.openStatus() != Acad::eOk) return;
            pBTRCurSpace->appendAcDbEntity(idBref,pBref);
        }

        // NOTE: Skip adding attributes to block reference

        AcDbDynBlockReference pDynRef(pBref);
        if (!pDynRef.isDynamicBlock()) {
            acutPrintf(_T("\nBlock <%s> is not dynamic!"), blockName);
            return;
        }
        AcDbDynBlockReferencePropertyArray propArr;
        pDynRef.getBlockProperties(propArr);
        // Array of variable names
        AcStringArray varNames;
        varNames.append(_T("d1"));
        varNames.append(_T("d2"));
        varNames.append(_T("d3"));
        ACHAR buf[512];
        for (int i = 0; i < propArr.length(); i++) {
            AcDbDynBlockReferenceProperty prop = propArr;
            AcDbEvalVariant pValVar = prop.value();
            int iVar = 0;
            if (varNames.find(prop.propertyName(),iVar)) {
                _stprintf(buf,_T("\nNew value of %s <%g>: "),
                    prop.propertyName().kACharPtr(),
                    pValVar.resval.rreal);
                acedInitGet(RSG_NOZERO | RSG_NONEG, NULL);
                // We know all our variables are double.
                double newVal = pValVar.resval.rreal;
                int rc = acedGetReal(buf, &newVal);
                if (rc == RTCAN) return;
                pValVar.resval.rreal = newVal;
                prop.setValue(pValVar);
            }
        }
    }

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2021-6-23 14:19
  • 签到天数: 1543 天

    [LV.Master]伴坛终老

     楼主| 发表于 2021-2-8 00:08 | 显示全部楼层
    static void aeastbbb(void)
    {
      AcTransaction* pTrans = actrTransactionManager->startTransaction();

      AcDbObjectId blkTabId = acdbHostApplicationServices()->workingDatabase()->blockTableId();
      AcDbBlockTable* pBlkTab = NULL;
      pTrans->getObject((AcDbObject*&)pBlkTab, blkTabId, AcDb::kForRead);

      if(pBlkTab->has(_T("c")))
      {
       AcDbObjectId blockId;
       AcDbBlockTableRecord* pBlock = NULL;
       pBlkTab->getAt(_T("c"), blockId);

       AcDbBlockReference* pRef = new AcDbBlockReference(AcGePoint3d(0,0,0), blockId);

       AcDbObjectId msId;
       AcDbBlockTableRecord* pMS = NULL;
       pBlkTab->getAt(ACDB_MODEL_SPACE, msId);
       pTrans->getObject((AcDbObject*&)pMS, msId, AcDb::kForWrite);

       // Add the block reference to the dwg/database first!!!!
       pMS->appendAcDbEntity(pRef);
       actrTransactionManager->addNewlyCreatedDBRObject(pRef);

       // Check to make sure it is a dynamic block
       AcDbDynBlockReference dynBlkRef(pRef->id());
       if(dynBlkRef.isDynamicBlock())
       {
        // These are the names of the available visibilty states
        //AcArray visNames;
        AcStringArray varNames,visNames;
        visNames.append(_T("a1"));
        visNames.append(_T("a2"));
        visNames.append(_T("a3"));
        varNames.append(_T("user1"));

        AcDbDynBlockReferencePropertyArray propArr;
        dynBlkRef.getBlockProperties(propArr);
        acutPrintf(_T("\n the length is %d"), propArr.length());//

        for(int i = 0; i < propArr.length(); i++)
        {
         AcDbDynBlockReferenceProperty prop = propArr.at(i);
         AcDbEvalVariant val = prop.value();
         int iVar = 0;
         acutPrintf(_T("\npropertyName is  %s "), prop.propertyName());
        if (varNames.find(prop.propertyName(),iVar))
        {
         acutPrintf(_T("\npropertyName is  %s "), prop.propertyName());
         acutPrintf(_T("\n the length is %d"), iVar);//
         acutPrintf(_T("\n zhangzhang !!!!!!!!!!"));

         AcDbEvalVariantArray allowedVals;
         prop.getAllowedValues(allowedVals);
         acutPrintf(_T("\n the allowedVals is %d"), allowedVals.length());//
         AcDbEvalVariant visVal(visNames.at(2));
           prop.setValue(visVal);
          }
       }
       }
      }

      actrTransactionManager->endTransaction();
    }

    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2021-6-23 14:19
  • 签到天数: 1543 天

    [LV.Master]伴坛终老

     楼主| 发表于 2021-2-8 00:08 | 显示全部楼层
    static void aeastbbb(void)
    {
      AcTransaction* pTrans = actrTransactionManager->startTransaction();

      AcDbObjectId blkTabId = acdbHostApplicationServices()->workingDatabase()->blockTableId();
      AcDbBlockTable* pBlkTab = NULL;
      pTrans->getObject((AcDbObject*&)pBlkTab, blkTabId, AcDb::kForRead);

      if(pBlkTab->has(_T("c")))
      {
       AcDbObjectId blockId;
       AcDbBlockTableRecord* pBlock = NULL;
       pBlkTab->getAt(_T("c"), blockId);

       AcDbBlockReference* pRef = new AcDbBlockReference(AcGePoint3d(0,0,0), blockId);

       AcDbObjectId msId;
       AcDbBlockTableRecord* pMS = NULL;
       pBlkTab->getAt(ACDB_MODEL_SPACE, msId);
       pTrans->getObject((AcDbObject*&)pMS, msId, AcDb::kForWrite);

       // Add the block reference to the dwg/database first!!!!
       pMS->appendAcDbEntity(pRef);
       actrTransactionManager->addNewlyCreatedDBRObject(pRef);

       // Check to make sure it is a dynamic block
       AcDbDynBlockReference dynBlkRef(pRef->id());
       if(dynBlkRef.isDynamicBlock())
       {
        // These are the names of the available visibilty states
        //AcArray visNames;
        AcStringArray varNames,visNames;
        visNames.append(_T("a1"));
        visNames.append(_T("a2"));
        visNames.append(_T("a3"));
        varNames.append(_T("user1"));

        AcDbDynBlockReferencePropertyArray propArr;
        dynBlkRef.getBlockProperties(propArr);
        acutPrintf(_T("\n the length is %d"), propArr.length());//

        for(int i = 0; i < propArr.length(); i++)
        {
         AcDbDynBlockReferenceProperty prop = propArr.at(i);
         AcDbEvalVariant val = prop.value();
         int iVar = 0;
         acutPrintf(_T("\npropertyName is  %s "), prop.propertyName());
        if (varNames.find(prop.propertyName(),iVar))
        {
         acutPrintf(_T("\npropertyName is  %s "), prop.propertyName());
         acutPrintf(_T("\n the length is %d"), iVar);//
         acutPrintf(_T("\n zhangzhang !!!!!!!!!!"));

         AcDbEvalVariantArray allowedVals;
         prop.getAllowedValues(allowedVals);
         acutPrintf(_T("\n the allowedVals is %d"), allowedVals.length());//
         AcDbEvalVariant visVal(visNames.at(2));
           prop.setValue(visVal);
    }
    }
       }
      }

      actrTransactionManager->endTransaction();


    }




    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2021-6-23 14:19
  • 签到天数: 1543 天

    [LV.Master]伴坛终老

     楼主| 发表于 2021-2-8 00:48 | 显示全部楼层
    void dumpAcDbDimension(AcDbEntity *pEnt)
    {
        AcDbDimension *dim = (AcDbDimension *)pEnt;
        AcDbBlockTableRecord *pBtr;
        if(acdbOpenObject(pBtr, dim->dimBlockId(),AcDb::kForRead) != Acad::eOk) return;
        dumpBlockTableRecord(pBtr, dim->blockTransform());
        pBtr->close();
    }

    void dumpBlockTableRecord(AcDbBlockTableRecord *pBtr, AcGeMatrix3d &xform)
    {
        AcDbBlockTableRecordIterator *pIter;
        AcDbEntity *pEnt;
        for(pBtr->newIterator(pIter); !pIter->done(); pIter->step())
        {
            if( pIter->getEntity( pEnt, AcDb::kForRead ) != Acad::eOk ) continue;
            AcDbEntity *pEntCopy;
            if(pEnt->getTransformedCopy(xform,pEntCopy) == Acad::eOk )
            {
                dumpAcDbEntity( pEntCopy );
                delete pEntCopy;
            }
            pEnt->close();
        }
        delete pIter;
    }
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关闭

    推荐膜材品牌上一条 /6 下一条

    进口膜材 国产膜材 pvdf膜材ptfe膜材ETFE膜材
    最好的膜结构公司 一级膜结构资质 膜结构一级资质
    膜结构设计-膜结构十大品牌-etfe设计-充气膜结构
    诺科膜结构
    遨都膜结构设计
    中国膜结构网
    中国空间膜结构

    QQ|申请友链|手机版|中国膜结构论坛