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);
Code ObjectARX, C# et API
- Créer un nouveau bloc avec lien hypertexte.
- Afficher les noms des blocs dynamiques.
- Insérer un bloc existant dans le dessin en cours.
- Ajouter un calque anonyme.
- Afficher la liste des calques, et calques cachés (anonymes).
- Changer la couleur d’un objet (Entité).
- Tester l’existence d’une présentation dans le dessin.
- Ajouter des informations et propriétés personnalisées au fichier dessin en cours.
- Afficher les noms des styles visuels disponibles dans le dessin.
- Compter le nombre d’occurrences des Xréfs.
Extraits de code pour afficher les noms des blocs dynamiques insérés dans le dessin en cours :
ObjectARX C++ API
▲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
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));