Programmation

Développement ObjectARX AutoCAD :
Module de conception de façades (mur Bois/Bloc)

Programmation

Programmation

Evaluez vos connaissances sur AutoCAD :
Questionnaires sur les Xréfs et sur les Blocs.

Code ObjectARX, C# et API



Extraits de code pour afficher les noms des blocs dynamiques insérés dans le dessin en cours :


ObjectARX C++ API
Acad::ErrorStatus errSt;
AcDbBlockTable *adrTabBlocs;

errSt = acdbHostApplicationServices()->workingDatabase()->getSymbolTable(adrTabBlocs, AcDb::kForRead);  

if( errSt != Acad::eOk)
    return;

const TCHAR *tcNomBloc;
int comptBDyn = 0;

AcDbBlockTableIterator *adrBTIterateur;
if (adrTabBlocs->newIterator(adrBTIterateur) == Acad::eOk) {

    while (!adrBTIterateur->done()) {

        AcDbBlockTableRecord *adBTRec;

        if (adrBTIterateur->getRecord(adBTRec, AcDb::kForRead) == Acad::eOk) {

            if (AcDbDynBlockReference::isDynamicBlock(adBTRec->objectId()))    {

                adBTRec->getName(tcNomBloc);
                acutPrintf(_T("\n < %s > est un Bloc dynamique."), tcNomBloc);
                comptBDyn++;
            }              
            adBTRec->close();
        }
        adrBTIterateur->step();
    }
}
adrTabBlocs->close();

acutPrintf(_T("\n %d bloc(s) dynamique(s) trouvé(s)."), comptBDyn);
 
▲haut de page

C#
Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
Database adrDB = Application.DocumentManager.MdiActiveDocument.Database;
int comptBDyn = 0;

using (Transaction tr = adrDB.TransactionManager.StartTransaction())
{

    BlockTable adTableBlocs = (BlockTable)tr.GetObject(adrDB.BlockTableId, OpenMode.ForRead);

    foreach (ObjectId idTblc in adTableBlocs)
    {
        BlockTableRecord adBTR = (BlockTableRecord)tr.GetObject(idTblc, OpenMode.ForRead);

        if (adBTR.IsDynamicBlock)
        {                    
            ed.WriteMessage(String.Format("\n < {0} > est un Bloc dynamique.", adBTR.Name));
            comptBDyn++;
        }

    }
    tr.Commit();
}
ed.WriteMessage(String.Format("\n {0} bloc(s) dynamique(s) trouvé(s).", comptBDyn));
 
▲haut de page