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 la liste des calques et même les calques cachés (anonyme) du dessin en cours :


ObjectARX C++ API
AcApDocument *adrDocActive = acDocManager->mdiActiveDocument();
AcDbDatabase *adrDB = adrDocActive->database();
AcDbLayerTable *adrTabCalque;

if (Acad::eOk !=  adrDB->getLayerTable(adrTabCalque, AcDb::kForRead))
{      
    acutPrintf (_T("\nProblème de récupération de la table des calques.")) ;  
    return ;    
}  

AcDbLayerTableIterator *adrClTableIterator ;  
if (Acad::eOk != adrTabCalque->newIterator(adrClTableIterator))
{      
    acutPrintf (_T("\nProblème d'itérateur table des calques.")) ;        
    adrTabCalque->close () ;    
    return ;    
}
adrTabCalque->close () ;

adrClTableIterator->setSkipHidden(false);    

AcDbObjectId idCalque;
AcDbLayerTableRecord *adrClTableRec;
TCHAR *tcNomCalque;

for ( ; !adrClTableIterator->done() ; adrClTableIterator->step())
{          
    if (Acad::eOk != adrClTableIterator->getRecord(adrClTableRec, AcDb::kForRead))
        continue;

    if (Acad::eOk != adrClTableRec->getName(tcNomCalque))
    {
        adrClTableRec->close();
        continue;
    }

    if (adrClTableRec->isHidden())
    {
        acutPrintf(_T("\nCalque Caché = %s"), tcNomCalque);
        //Pour afficher le calque caché, supprimer les commentaires Com1 et Com2.
        //Com1// adrClTableRec->upgradeOpen();
        //Com2// adrClTableRec->setIsHidden(false); //Afficher le calque                    
    }
    else
        acutPrintf(_T("\nCalque = %s"), tcNomCalque);

    adrClTableRec->close();
}

delete adrClTableIterator;
 
▲haut de page

C#
Database adrDB = HostApplicationServices.WorkingDatabase;
Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;

using (Transaction tr = adrDB.TransactionManager.StartTransaction())
{
    LayerTable adTableCalqs = ((LayerTable)tr.GetObject(adrDB.LayerTableId, OpenMode.ForRead)).IncludingHidden;

    SymbolTableEnumerator sysTabEnum = adTableCalqs.GetEnumerator();
    while (sysTabEnum.MoveNext() == true)
    {
        ObjectId objEntr = (ObjectId)sysTabEnum.Current;
        LayerTableRecord adLTR = (LayerTableRecord)tr.GetObject(objEntr, OpenMode.ForRead);

        if (adLTR.IsHidden)
        {                        
            ed.WriteMessage(string.Format("\nCalque Caché : {0}", adLTR.Name));
            //Pour afficher le calque caché, supprimer les commentaires Com1 et Com2.
            //Com1// adLTR.UpgradeOpen();
            //Com2// adLTR.IsHidden = false;                    
        }
        else                        
            ed.WriteMessage(string.Format("\nCalque : {0}", adLTR.Name));                    
    }
    tr.Commit();
}
 
▲haut de page