<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: how to use the Dynamic Blocks in objectarx2010？ in ObjectARX Forum</title>
    <link>https://forums.autodesk.com/t5/objectarx-forum/how-to-use-the-dynamic-blocks-in-objectarx2010/m-p/3791033#M13874</link>
    <description>&lt;P&gt;&lt;FONT size="4"&gt;Hello,experts&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="4"&gt;I have a new question,I want to know how to use the Dynamic Blocks in objectarx2010. I define a &lt;/FONT&gt;&lt;FONT size="4"&gt;Dynamic Block in autocad2010,Now I want to insert the Dynamic Block in a dwg-file,can you tell &lt;/FONT&gt;&lt;FONT size="4"&gt;me the code,Thank you very much!&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="4"&gt;this is a screenshot of the Dynamic Blocks,I want to insert the Dynamic Block in the coordinate&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="4"&gt;position(x=50,y=50),and I want change the three dimensions:&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="4"&gt;before command:they are d1=48;d2=96;d3=43&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="4"&gt;after&amp;nbsp; command:they are d1=98;d2=150;d3=70&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="4"&gt;And I have attached this dwg-file in my post in order to you can test your code with it(I have&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="4"&gt;defined the the Dynamic Block,its name is a;you can try to insert it in autocad2010).&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="4"&gt;I think the class of AcDbDynBlockReference is useful,but I don't know how to use it.Can you help me?&lt;/FONT&gt;&lt;/P&gt;</description>
    <pubDate>Wed, 27 Feb 2013 07:27:12 GMT</pubDate>
    <dc:creator>Anonymous</dc:creator>
    <dc:date>2013-02-27T07:27:12Z</dc:date>
    <item>
      <title>how to use the Dynamic Blocks in objectarx2010？</title>
      <link>https://forums.autodesk.com/t5/objectarx-forum/how-to-use-the-dynamic-blocks-in-objectarx2010/m-p/3790932#M13872</link>
      <description>&lt;P&gt;&lt;FONT size="4"&gt;Hello,experts&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="4"&gt;I have a new question,I want to know how to use the Dynamic Blocks in objectarx2010. I define a Dynamic Block in autocad2010,Now I want to insert the Dynamic Block in a dwg-file,can you tell me the code。&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="4"&gt;Thank you very much!&lt;/FONT&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 27 Feb 2013 01:58:24 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/objectarx-forum/how-to-use-the-dynamic-blocks-in-objectarx2010/m-p/3790932#M13872</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2013-02-27T01:58:24Z</dc:date>
    </item>
    <item>
      <title>Re: how to use the Dynamic Blocks in objectarx2010？</title>
      <link>https://forums.autodesk.com/t5/objectarx-forum/how-to-use-the-dynamic-blocks-in-objectarx2010/m-p/3791024#M13873</link>
      <description>&lt;P&gt;&lt;FONT size="4" color="#000000"&gt;Hello,experts&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#000000"&gt;&lt;FONT size="4"&gt;&amp;nbsp; I have a new question,I want to know how to use the Dynamic Blocks in objectarx2010. I define a &lt;/FONT&gt;&lt;FONT size="4"&gt;Dynamic Block in autocad2010,Now I want to insert the Dynamic Block in a dwg-file,can you tell &lt;/FONT&gt;&lt;FONT size="4"&gt;me the&amp;nbsp;&amp;nbsp;code?&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Thank you very much!&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#000000"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#000000"&gt;&lt;FONT size="4"&gt;&amp;nbsp; this is a screenshot of the Dynamic Blocks,I want to insert the Dynamic Block in the &lt;/FONT&gt;&lt;FONT size="4"&gt;position(x=50,y=50),and I want change the three dimensions:&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size="4" color="#000000"&gt;before command:they are d1=48;d2=96;d3=43&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="4" color="#000000"&gt;after&amp;nbsp;&amp;nbsp; &amp;nbsp;command:they are d1=98;d2=150;d3=70&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#000000"&gt;&lt;FONT size="4"&gt;And I have attached this dwg-file in my post in order to you can test your code with it (I have &lt;/FONT&gt;&lt;FONT size="4"&gt;defined the the Dynamic Block,its name is a ; you can try to insert it in autocad2010).&lt;/FONT&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="4" color="#000000"&gt;I think the class of AcDbDynBlockReference is useful,but I don't know how to use it.Can you help me?&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size="4" color="#000000"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size="4" color="#000000"&gt;Edited by&lt;BR /&gt;Discussion_Admin&lt;/FONT&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 27 Feb 2013 21:57:08 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/objectarx-forum/how-to-use-the-dynamic-blocks-in-objectarx2010/m-p/3791024#M13873</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2013-02-27T21:57:08Z</dc:date>
    </item>
    <item>
      <title>Re: how to use the Dynamic Blocks in objectarx2010？</title>
      <link>https://forums.autodesk.com/t5/objectarx-forum/how-to-use-the-dynamic-blocks-in-objectarx2010/m-p/3791033#M13874</link>
      <description>&lt;P&gt;&lt;FONT size="4"&gt;Hello,experts&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="4"&gt;I have a new question,I want to know how to use the Dynamic Blocks in objectarx2010. I define a &lt;/FONT&gt;&lt;FONT size="4"&gt;Dynamic Block in autocad2010,Now I want to insert the Dynamic Block in a dwg-file,can you tell &lt;/FONT&gt;&lt;FONT size="4"&gt;me the code,Thank you very much!&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="4"&gt;this is a screenshot of the Dynamic Blocks,I want to insert the Dynamic Block in the coordinate&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="4"&gt;position(x=50,y=50),and I want change the three dimensions:&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="4"&gt;before command:they are d1=48;d2=96;d3=43&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="4"&gt;after&amp;nbsp; command:they are d1=98;d2=150;d3=70&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="4"&gt;And I have attached this dwg-file in my post in order to you can test your code with it(I have&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="4"&gt;defined the the Dynamic Block,its name is a;you can try to insert it in autocad2010).&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="4"&gt;I think the class of AcDbDynBlockReference is useful,but I don't know how to use it.Can you help me?&lt;/FONT&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 27 Feb 2013 07:27:12 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/objectarx-forum/how-to-use-the-dynamic-blocks-in-objectarx2010/m-p/3791033#M13874</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2013-02-27T07:27:12Z</dc:date>
    </item>
    <item>
      <title>Re: how to use the Dynamic Blocks in objectarx2010？</title>
      <link>https://forums.autodesk.com/t5/objectarx-forum/how-to-use-the-dynamic-blocks-in-objectarx2010/m-p/3792266#M13875</link>
      <description>&lt;PRE&gt;// (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 &amp;lt;AcDbAssocNetwork.h&amp;gt;
#include &amp;lt;AcDbAssocVariable.h&amp;gt;
#include &amp;lt;dbdimassoc.h&amp;gt;
#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-&amp;gt;getActions();
        for (int i = 0; i &amp;lt; idsActions.length(); i++) {
            AcDbObjectPointer&amp;lt;AcDbAssocAction&amp;gt; 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-&amp;gt;name().kACharPtr(), pVar-&amp;gt;expression().kACharPtr());
                }
            }
        }
    }

    static int GetVars(const AcDbAssocNetwork *pNet, AcStringArray &amp;amp;names, AcDbObjectIdArray &amp;amp;ids)
    {
        AcDbObjectIdArray idsActions = pNet-&amp;gt;getActions();
        for (int i = 0; i &amp;lt; idsActions.length(); i++) {
            AcDbObjectPointer&amp;lt;AcDbAssocAction&amp;gt; pAction(idsActions[i],AcDb::kForRead);
            if (pAction.openStatus() == Acad::eOk) {
                AcDbAssocVariable *pVar = AcDbAssocVariable::cast(pAction.object());
                if (pVar) {
                    names.append(pVar-&amp;gt;name());
                    ids.append(pVar-&amp;gt;objectId());
                }
            }
        }
        return ids.length();
    }

    //
    //  Command list all AssocVariable
    //
    static void TestAssocListAssocVars(void)
    {
        AcDbObjectId idNet = AcDbAssocNetwork::getInstanceFromDatabase(acdbCurDwg(),true);
        AcDbObjectPointer&amp;lt;AcDbAssocNetwork&amp;gt; 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&amp;lt;AcDbAssocNetwork&amp;gt; pNetMain(idNet,AcDb::kForRead);
        if (pNetMain.openStatus() != Acad::eOk) return;
        AcDbObjectIdArray ids = pNetMain-&amp;gt;getActions();
        AcDbObjectId idNetSub;
        if (ids.length() == 0) {
            AcDbAssocNetwork *pNetSub = new AcDbAssocNetwork();
            if (pNetMain-&amp;gt;upgradeOpen() == Acad::eOk) {
                if (pCurDb-&amp;gt;addAcDbObject(idNetSub,pNetSub) == Acad::eOk) {
                    pNetSub-&amp;gt;addAction(idNetSub,true);
                    pNetSub-&amp;gt;close();
                } else {
                    delete pNetSub;
                }
                pNetMain-&amp;gt;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&amp;lt;AcDbAssocNetwork&amp;gt; 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&amp;lt;AcDbAssocVariable&amp;gt; pVar(idsVars[ivar], AcDb::kForWrite);
            if (pVar.openStatus() == Acad::eOk) {
                if (pVar-&amp;gt;validateNameAndExpression(name,val,errorMsg) != Acad::eOk) {
                    acutPrintf(_T("\nError %s"), errorMsg.kACharPtr());
                    return;
                }

                if ((es = pVar-&amp;gt;setExpression(valStr,_T(""),true,true,errorMsg,true)) != Acad::eOk) {
                    acutPrintf(_T("\npVar-&amp;gt;setExpression(valStr))=%s error=%s"),\
                        acadErrorStatusText(es), errorMsg.kACharPtr());
                    return;
                }
            }
        } else {
            AcDbAssocVariable *ppVar = new AcDbAssocVariable();
            AcDbObjectId idVar;
            if (pCurDb-&amp;gt;addAcDbObject(idVar,ppVar) == Acad::eOk) {
                ppVar-&amp;gt;close();
                pNet-&amp;gt;addAction(idVar,true);
            } else {
                delete ppVar; return;
            }

            AcDbObjectPointer&amp;lt;AcDbAssocVariable&amp;gt; pVar(idVar, AcDb::kForWrite);
            if (pVar.openStatus() == Acad::eOk) {
                if (pVar-&amp;gt;validateNameAndExpression(name,val,errorMsg) != Acad::eOk) {
                    acutPrintf(_T("\npVar-&amp;gt;validateNameAndExpression(name,val,errorMsg) =  %s"), errorMsg.kACharPtr());
                    pVar-&amp;gt;close();
                    pNet-&amp;gt;removeAction(idVar,true);
                    return;
                }

                if ((es = pVar-&amp;gt;setName(nameStr,true)) != Acad::eOk) {
                    acutPrintf(_T("\npVar-&amp;gt;setName(nameStr,true)=%s error=%s"),\
                        acadErrorStatusText(es), errorMsg.kACharPtr());
                    pVar-&amp;gt;close();
                    pNet-&amp;gt;removeAction(idVar,true);
                    return;
                }

                if ((es = pVar-&amp;gt;setExpression(valStr,_T(""),true,true,errorMsg,true)) != Acad::eOk) {
                    acutPrintf(_T("\npVar-&amp;gt;setExpression(valStr))=%s error=%s"),\
                        acadErrorStatusText(es), errorMsg.kACharPtr());
                    pVar-&amp;gt;close();
                    pNet-&amp;gt;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&amp;lt;AcDbBlockReference&amp;gt; pBref(eidBref, AcDb::kForRead);
                if (pBref.openStatus() != Acad::eOk) return;
                idNet = AcDbAssocNetwork::getInstanceFromObject(pBref.object()-&amp;gt;blockTableRecord(),true);
                reactors = pBref-&amp;gt;reactors();
            }
            if (idNet.isNull()) {
                acutPrintf(_T("\nNo variables")); return;
            }
            {
                AcDbObjectPointer&amp;lt;AcDbAssocNetwork&amp;gt; pNetMain(idNet,AcDb::kForRead);
                if (pNetMain.openStatus() != Acad::eOk) return;
                AcDbObjectIdArray ids = pNetMain-&amp;gt;getActions();
                if (ids.length() == 0) return;
                GetVars(pNetMain.object(), sVarNames, idsVars);
            }

        }
        int ivar = 0;
        if (sVarNames.find(name, ivar)) {
            // Variable exist - change it
            AcDbObjectPointer&amp;lt;AcDbAssocVariable&amp;gt; pVar(idsVars[ivar], AcDb::kForWrite);
            if (pVar.openStatus() == Acad::eOk) {
                if (pVar-&amp;gt;validateNameAndExpression(name,val,errorMsg) != Acad::eOk) {
                    acutPrintf(_T("\nError %s"), errorMsg.kACharPtr());
                    return;
                }
                if ((es = pVar-&amp;gt;setExpression(val,_T(""),true,true,errorMsg,true)) != Acad::eOk) {
                    acutPrintf(_T("\npVar-&amp;gt;setExpression(valStr))=%s error=%s"),
                        acadErrorStatusText(es), errorMsg.kACharPtr());
                    return;
                }
                AcDbEvalVariant valvar;
                if ((es = pVar-&amp;gt;evaluateExpression(valvar)) != Acad::eOk) {
                    acutPrintf(_T("\npVar-&amp;gt;evaluateExpression(valvar))=%s error=%s"),
                        acadErrorStatusText(es), errorMsg.kACharPtr());
                    return;
                }
                if ((es = pVar-&amp;gt;setValue(valvar)) != Acad::eOk) {
                    acutPrintf(_T("\npVar-&amp;gt;setValue(valvar))=%s error=%s"),
                        acadErrorStatusText(es), errorMsg.kACharPtr());
                    return;
                }
                pVar-&amp;gt;evaluateDependencies();
            }
            {
                AcDbObjectPointer&amp;lt;AcDbBlockReference&amp;gt; pBref(eidBref, AcDb::kForWrite);
                if (pBref.openStatus() != Acad::eOk) return;
                pBref-&amp;gt;assertWriteEnabled(true);
            }
            void *pSomething = NULL;
            if (reactors != NULL) {
                for (int j = 0; j &amp;lt;= 1; j++) {
                    for (int i=0; i &amp;lt; reactors-&amp;gt;length(); i++) {
                        pSomething = reactors-&amp;gt;at(i);
                        AcDbObjectId idReact = acdbPersistentReactorObjectId(pSomething);
                        if (!idReact.isNull()) {
                            AcDbObjectPointer&amp;lt;AcDbDimAssoc&amp;gt; pDimAssoc(idReact,AcDb::kForWrite);
                            if (pDimAssoc.openStatus() != Acad::eOk) continue;
                            pDimAssoc-&amp;gt;updateDimension(true,true);
                            AcDbObjectIdArray idsAss; pDimAssoc-&amp;gt;getDimAssocGeomIds(idsAss);
                            if (idsAss.length() &amp;gt; 0) {
                                pDimAssoc-&amp;gt;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)
&lt;/PRE&gt;
&lt;P&gt;Command ChgBlockVar. &lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;P.S.: I hope that in the future you will not repeat the same questions several times in different topics and write me private messages several times. If it happens again, then I raised you to ignore list.&lt;/STRONG&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 28 Feb 2013 11:53:03 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/objectarx-forum/how-to-use-the-dynamic-blocks-in-objectarx2010/m-p/3792266#M13875</guid>
      <dc:creator>Alexander.Rivilis</dc:creator>
      <dc:date>2013-02-28T11:53:03Z</dc:date>
    </item>
    <item>
      <title>Re: how to use the Dynamic Blocks in objectarx2010？</title>
      <link>https://forums.autodesk.com/t5/objectarx-forum/how-to-use-the-dynamic-blocks-in-objectarx2010/m-p/3792276#M13876</link>
      <description>&lt;P&gt;&amp;nbsp;Thank you for your forgiveness!&lt;/P&gt;&lt;P&gt;Best wishes!&lt;/P&gt;</description>
      <pubDate>Thu, 28 Feb 2013 11:53:19 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/objectarx-forum/how-to-use-the-dynamic-blocks-in-objectarx2010/m-p/3792276#M13876</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2013-02-28T11:53:19Z</dc:date>
    </item>
    <item>
      <title>Re: how to use the Dynamic Blocks in objectarx2010？</title>
      <link>https://forums.autodesk.com/t5/objectarx-forum/how-to-use-the-dynamic-blocks-in-objectarx2010/m-p/3793381#M13878</link>
      <description>&lt;P&gt;hello,I am sorry,but your code can't achieve my aim.&lt;/P&gt;&lt;P&gt;I think the code like this probablely ,but the code still can't achieve my aim,the three dimensions are still:&lt;/P&gt;&lt;P&gt;d1=48;d2=96;d3=43.&lt;/P&gt;&lt;P&gt;Can you tell my&amp;nbsp; mistake?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;static void aeastone(void)&lt;/P&gt;&lt;P&gt;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AcTransaction* pTrans = actrTransactionManager-&amp;gt;startTransaction();&lt;/P&gt;&lt;P&gt;&amp;nbsp; AcDbObjectId blkTabId = acdbHostApplicationServices()-&amp;gt;workingDatabase()-&amp;gt;blockTableId();&amp;nbsp;&amp;nbsp; AcDbBlockTable* pBlkTab = NULL;&amp;nbsp;&amp;nbsp; pTrans-&amp;gt;getObject((AcDbObject*&amp;amp;)pBlkTab, blkTabId, AcDb::kForRead);//&lt;/P&gt;&lt;P&gt;&amp;nbsp; if(pBlkTab-&amp;gt;has(_T("a")))&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp; AcDbObjectId blockId;&amp;nbsp;&amp;nbsp;&amp;nbsp; AcDbBlockTableRecord* pBlock = NULL;&amp;nbsp;&amp;nbsp;&amp;nbsp; pBlkTab-&amp;gt;getAt(_T("a"), blockId);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; AcDbBlockReference* pRef = new AcDbBlockReference(AcGePoint3d(0,0,0), blockId);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; AcDbObjectId msId;&amp;nbsp;&amp;nbsp;&amp;nbsp; AcDbBlockTableRecord* pMS = NULL;&amp;nbsp;&amp;nbsp;&amp;nbsp; pBlkTab-&amp;gt;getAt(ACDB_MODEL_SPACE, msId);&amp;nbsp;&amp;nbsp;&amp;nbsp; pTrans-&amp;gt;getObject((AcDbObject*&amp;amp;)pMS, msId, AcDb::kForWrite);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; // Add the block reference to the dwg/database first!!!!&amp;nbsp;&amp;nbsp;&amp;nbsp; pMS-&amp;gt;appendAcDbEntity(pRef);&amp;nbsp;&amp;nbsp;&amp;nbsp; actrTransactionManager-&amp;gt;addNewlyCreatedDBRObject(pRef);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; // Check to make sure it is a dynamic block&amp;nbsp;&amp;nbsp;&amp;nbsp; AcDbDynBlockReference dynBlkRef(pRef-&amp;gt;id());&amp;nbsp;&amp;nbsp;&amp;nbsp; if(dynBlkRef.isDynamicBlock())&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AcDbDynBlockReferencePropertyArray propArr;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dynBlkRef.getBlockProperties(propArr);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; short a=98;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; acutPrintf(_T("\n the length is %d"), propArr.length());//2&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(int i = 0; i &amp;lt; propArr.length(); i++)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AcDbDynBlockReferenceProperty prop = propArr.at(i);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AcDbEvalVariant val = prop.value();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(val.restype == 40)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AcDbEvalVariant visVal(a);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; prop.setValue(visVal);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; actrTransactionManager-&amp;gt;endTransaction();&amp;nbsp; }&lt;/P&gt;</description>
      <pubDate>Fri, 01 Mar 2013 13:21:20 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/objectarx-forum/how-to-use-the-dynamic-blocks-in-objectarx2010/m-p/3793381#M13878</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2013-03-01T13:21:20Z</dc:date>
    </item>
    <item>
      <title>Re: how to use the Dynamic Blocks in objectarx2010？</title>
      <link>https://forums.autodesk.com/t5/objectarx-forum/how-to-use-the-dynamic-blocks-in-objectarx2010/m-p/3793417#M13879</link>
      <description>&lt;P&gt;Hello,expert&lt;/P&gt;&lt;P&gt;I have&amp;nbsp; build&amp;nbsp;your code and I have run command ChgBlockVar,&lt;/P&gt;&lt;P&gt;but the result is not my purpose.&lt;/P&gt;</description>
      <pubDate>Fri, 01 Mar 2013 13:50:49 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/objectarx-forum/how-to-use-the-dynamic-blocks-in-objectarx2010/m-p/3793417#M13879</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2013-03-01T13:50:49Z</dc:date>
    </item>
    <item>
      <title>Re: how to use the Dynamic Blocks in objectarx2010？</title>
      <link>https://forums.autodesk.com/t5/objectarx-forum/how-to-use-the-dynamic-blocks-in-objectarx2010/m-p/3793434#M13880</link>
      <description>&lt;P&gt;I'll see your's code when I have free time. In the meantime, learn to use the button &lt;STRONG&gt;Insert Code:&amp;nbsp; &amp;nbsp; &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;IMG src="https://forums.autodesk.com/t5/image/serverpage/image-id/47957i6F6F0ADBBF181CCE/image-size/original?v=mpbl-1&amp;amp;px=-1" border="0" alt="01-03-2013 15-59-28.png" title="01-03-2013 15-59-28.png" align="middle" /&gt;&lt;BR /&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;It is impossible to read your's code. &lt;img id="smileymad" class="emoticon emoticon-smileymad" src="https://forums.autodesk.com/i/smilies/16x16_smiley-mad.png" alt="Smiley Mad" title="Smiley Mad" /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 01 Mar 2013 14:01:36 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/objectarx-forum/how-to-use-the-dynamic-blocks-in-objectarx2010/m-p/3793434#M13880</guid>
      <dc:creator>Alexander.Rivilis</dc:creator>
      <dc:date>2013-03-01T14:01:36Z</dc:date>
    </item>
    <item>
      <title>Re: how to use the Dynamic Blocks in objectarx2010？</title>
      <link>https://forums.autodesk.com/t5/objectarx-forum/how-to-use-the-dynamic-blocks-in-objectarx2010/m-p/3794234#M13881</link>
      <description>&lt;PRE&gt;static void ABCV(void)
{
    AcDbDatabase *pCurDb = acdbCurDwg();
    AcDbObjectId idCurSpace = pCurDb-&amp;gt;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 &amp;lt;%s&amp;gt; not found!"), blockName);
            return;
        }
        idBTR = pBTR-&amp;gt;objectId();
    }

    AcDbObjectPointer&amp;lt;AcDbBlockReference&amp;gt; pBref; pBref.create();
    pBref-&amp;gt;setBlockTableRecord(idBTR);
    pBref-&amp;gt;setPosition(pIns);
    AcDbObjectId idBref;
    {
        AcDbBlockTableRecordPointer pBTRCurSpace(idCurSpace, AcDb::kForWrite);
        if (pBTRCurSpace.openStatus() != Acad::eOk) return;
        pBTRCurSpace-&amp;gt;appendAcDbEntity(idBref,pBref);
    }

    // NOTE: Skip adding attributes to block reference

    AcDbDynBlockReference pDynRef(pBref);
    if (!pDynRef.isDynamicBlock()) {
        acutPrintf(_T("\nBlock &amp;lt;%s&amp;gt; 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 &amp;lt; propArr.length(); i++) {
        AcDbDynBlockReferenceProperty prop = propArr[i];
        AcDbEvalVariant pValVar = prop.value();
        int iVar = 0;
        if (varNames.find(prop.propertyName(),iVar)) {
            _stprintf(buf,_T("\nNew value of %s &amp;lt;%g&amp;gt;: "), 
                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, &amp;amp;newVal);
            if (rc == RTCAN) return;
            pValVar.resval.rreal = newVal;
            prop.setValue(pValVar);
        }
    }
}
&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;IMG src="https://forums.autodesk.com/t5/image/serverpage/image-id/48031iD6B41C7DD11CA4FF/image-size/original?v=mpbl-1&amp;amp;px=-1" border="0" alt="02-03-2013 1-33-04.png" title="02-03-2013 1-33-04.png" width="478" height="436" align="middle" /&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 01 Mar 2013 23:39:05 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/objectarx-forum/how-to-use-the-dynamic-blocks-in-objectarx2010/m-p/3794234#M13881</guid>
      <dc:creator>Alexander.Rivilis</dc:creator>
      <dc:date>2013-03-01T23:39:05Z</dc:date>
    </item>
    <item>
      <title>Re: how to use the Dynamic Blocks in objectarx2010？</title>
      <link>https://forums.autodesk.com/t5/objectarx-forum/how-to-use-the-dynamic-blocks-in-objectarx2010/m-p/3794376#M13882</link>
      <description>Thank you very much! you are my mentor! best wishes!</description>
      <pubDate>Sat, 02 Mar 2013 12:08:20 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/objectarx-forum/how-to-use-the-dynamic-blocks-in-objectarx2010/m-p/3794376#M13882</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2013-03-02T12:08:20Z</dc:date>
    </item>
    <item>
      <title>Re: how to use the Dynamic Blocks in objectarx2010？</title>
      <link>https://forums.autodesk.com/t5/objectarx-forum/how-to-use-the-dynamic-blocks-in-objectarx2010/m-p/3795120#M13883</link>
      <description>&lt;P&gt;Hello,experts&lt;BR /&gt;I have a similar question,It's about "Block Properties Table",I want to use a Block Properties Table to manage a Dynamic Block.I have defiened a Dynamic Block and its Block Properties Table in Autocad2010,this is the screenshot of the Block Properties Table(a1:d1=100,d2=200;a2:d1=100,d2=400;a3:d1=100,d2=600;).&lt;BR /&gt;Now I want to insert the Dynamic Block using objectarx2010.after I input a command,the block of a2(d1=100,d2=400) is inserted.&lt;/P&gt;&lt;P&gt;I have written the code,but the code still can't achieve my aim,Can you tell my&amp;nbsp; mistake?Thank you very much!&lt;/P&gt;&lt;P&gt;&lt;IMG title="2.png" align="center" alt="2.png" border="0" src="https://forums.autodesk.com/t5/image/serverpage/image-id/48106i2F763E535AA34753/image-size/original?v=mpbl-1&amp;amp;px=-1" /&gt;&lt;/P&gt;&lt;P&gt;static void aeastbbb(void)&lt;BR /&gt;&amp;nbsp;{&lt;BR /&gt;&amp;nbsp; AcTransaction* pTrans = actrTransactionManager-&amp;gt;startTransaction();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;AcDbObjectId blkTabId = acdbHostApplicationServices()-&amp;gt;workingDatabase()-&amp;gt;blockTableId();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;AcDbBlockTable* pBlkTab = NULL;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;pTrans-&amp;gt;getObject((AcDbObject*&amp;amp;)pBlkTab, blkTabId, AcDb::kForRead);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;if(pBlkTab-&amp;gt;has(_T("c")))&lt;BR /&gt;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AcDbObjectId blockId;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AcDbBlockTableRecord* pBlock = NULL;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;pBlkTab-&amp;gt;getAt(_T("c"), blockId);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AcDbBlockReference* pRef = new AcDbBlockReference(AcGePoint3d(0,0,0), blockId);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AcDbObjectId msId;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AcDbBlockTableRecord* pMS = NULL;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;pBlkTab-&amp;gt;getAt(ACDB_MODEL_SPACE, msId);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;pTrans-&amp;gt;getObject((AcDbObject*&amp;amp;)pMS, msId, AcDb::kForWrite);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Add the block reference to the dwg/database first!!!!&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;pMS-&amp;gt;appendAcDbEntity(pRef);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;actrTransactionManager-&amp;gt;addNewlyCreatedDBRObject(pRef);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Check to make sure it is a dynamic block&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AcDbDynBlockReference dynBlkRef(pRef-&amp;gt;id());&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(dynBlkRef.isDynamicBlock())&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// These are the names of the available visibilty states&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//AcArray visNames;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AcStringArray varNames,visNames;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;visNames.append(_T("a1"));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;visNames.append(_T("a2"));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;visNames.append(_T("a3"));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;varNames.append(_T("user1"));&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AcDbDynBlockReferencePropertyArray propArr;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dynBlkRef.getBlockProperties(propArr);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;acutPrintf(_T("\n the length is %d"), propArr.length());//&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for(int i = 0; i &amp;lt; propArr.length(); i++)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AcDbDynBlockReferenceProperty prop = propArr.at(i);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AcDbEvalVariant val = prop.value();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int iVar = 0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;acutPrintf(_T("\npropertyName is&amp;nbsp; %s "), prop.propertyName());&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (varNames.find(prop.propertyName(),iVar))&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;acutPrintf(_T("\npropertyName is&amp;nbsp; %s "), prop.propertyName());&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;acutPrintf(_T("\n the length is %d"), iVar);//&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;acutPrintf(_T("\n zhangzhang !!!!!!!!!!"));&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AcDbEvalVariantArray allowedVals;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;prop.getAllowedValues(allowedVals);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;acutPrintf(_T("\n the allowedVals is %d"), allowedVals.length());//&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AcDbEvalVariant visVal(visNames.at(2));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;prop.setValue(visVal);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;actrTransactionManager-&amp;gt;endTransaction();&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 04 Mar 2013 12:01:53 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/objectarx-forum/how-to-use-the-dynamic-blocks-in-objectarx2010/m-p/3795120#M13883</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2013-03-04T12:01:53Z</dc:date>
    </item>
    <item>
      <title>Re: how to use the Dynamic Blocks in objectarx2010？</title>
      <link>https://forums.autodesk.com/t5/objectarx-forum/how-to-use-the-dynamic-blocks-in-objectarx2010/m-p/3795130#M13884</link>
      <description>&lt;P&gt;Hello,experts&lt;BR /&gt;I have a similar question,It's about "Block Properties Table",I want to use a Block Properties Table to manage a Dynamic Block.I have defiened a Dynamic Block and its Block Properties Table in Autocad2010,this is the screenshot of the Block Properties Table(a1:d1=100,d2=200;a2:d1=100,d2=400;a3:d1=100,d2=600;).&lt;BR /&gt;Now I want to insert the Dynamic Block using objectarx2010.after I input a command,the block of a2(d1=100,d2=400) is inserted.&lt;/P&gt;&lt;P&gt;I have written the code,but the code still can't achieve my aim,Can you tell my&amp;nbsp; mistake?Thank you very much!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;this is the code:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;static void aeastbbb(void)&lt;BR /&gt;&amp;nbsp;{&lt;BR /&gt;&amp;nbsp; AcTransaction* pTrans = actrTransactionManager-&amp;gt;startTransaction();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;AcDbObjectId blkTabId = acdbHostApplicationServices()-&amp;gt;workingDatabase()-&amp;gt;blockTableId();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;AcDbBlockTable* pBlkTab = NULL;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;pTrans-&amp;gt;getObject((AcDbObject*&amp;amp;)pBlkTab, blkTabId, AcDb::kForRead);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;if(pBlkTab-&amp;gt;has(_T("c")))&lt;BR /&gt;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AcDbObjectId blockId;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AcDbBlockTableRecord* pBlock = NULL;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;pBlkTab-&amp;gt;getAt(_T("c"), blockId);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AcDbBlockReference* pRef = new AcDbBlockReference(AcGePoint3d(0,0,0), blockId);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AcDbObjectId msId;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AcDbBlockTableRecord* pMS = NULL;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;pBlkTab-&amp;gt;getAt(ACDB_MODEL_SPACE, msId);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;pTrans-&amp;gt;getObject((AcDbObject*&amp;amp;)pMS, msId, AcDb::kForWrite);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Add the block reference to the dwg/database first!!!!&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;pMS-&amp;gt;appendAcDbEntity(pRef);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;actrTransactionManager-&amp;gt;addNewlyCreatedDBRObject(pRef);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Check to make sure it is a dynamic block&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AcDbDynBlockReference dynBlkRef(pRef-&amp;gt;id());&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(dynBlkRef.isDynamicBlock())&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// These are the names of the available visibilty states&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//AcArray visNames;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AcStringArray varNames,visNames;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;visNames.append(_T("a1"));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;visNames.append(_T("a2"));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;visNames.append(_T("a3"));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;varNames.append(_T("user1"));&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AcDbDynBlockReferencePropertyArray propArr;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dynBlkRef.getBlockProperties(propArr);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;acutPrintf(_T("\n the length is %d"), propArr.length());//&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for(int i = 0; i &amp;lt; propArr.length(); i++)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AcDbDynBlockReferenceProperty prop = propArr.at(i);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AcDbEvalVariant val = prop.value();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int iVar = 0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;acutPrintf(_T("\npropertyName is&amp;nbsp; %s "), prop.propertyName());&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (varNames.find(prop.propertyName(),iVar))&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;acutPrintf(_T("\npropertyName is&amp;nbsp; %s "), prop.propertyName());&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;acutPrintf(_T("\n the length is %d"), iVar);//&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;acutPrintf(_T("\n zhangzhang !!!!!!!!!!"));&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AcDbEvalVariantArray allowedVals;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;prop.getAllowedValues(allowedVals);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;acutPrintf(_T("\n the allowedVals is %d"), allowedVals.length());//&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AcDbEvalVariant visVal(visNames.at(2));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;prop.setValue(visVal);&lt;BR /&gt;}&lt;BR /&gt;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;actrTransactionManager-&amp;gt;endTransaction();&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 04 Mar 2013 12:13:17 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/objectarx-forum/how-to-use-the-dynamic-blocks-in-objectarx2010/m-p/3795130#M13884</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2013-03-04T12:13:17Z</dc:date>
    </item>
  </channel>
</rss>

