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 ajouter un calque anonyme : un calque qui n’apparaît pas dans la liste du Gestionnaire des propriétés des calques d’AutoCAD :


ObjectARX C++ API
Acad::ErrorStatus errSt;
const ACHAR *nomCalque = ACRX_T("TEST");
AcApDocument *adrDocActive = acDocManager->mdiActiveDocument();
AcDbDatabase *adrDB = adrDocActive->database();

AcDbLayerTable* adrTabCalque;
errSt = adrDB->getSymbolTable(adrTabCalque, AcDb::kForRead);
if (errSt != Acad::eOk) {
    //*MSG*/ acadErrorStatusText(errSt);
return;
}

if (adrTabCalque->has(nomCalque)) {        
    adrTabCalque->close();
    //*MSG*/ acadErrorStatusText(errSt);
    return;
}

errSt = adrTabCalque->upgradeOpen();
if (errSt != Acad::eOk) {
    adrTabCalque->close();
    //*MSG*/ acadErrorStatusText(errSt);                
    return;
}

AcDbLayerTableRecord* nouvRec = new AcDbLayerTableRecord();
errSt = nouvRec->setName(nomCalque);
if (errSt != Acad::eOk) {
    delete nouvRec;
    adrTabCalque->close();
    //*MSG*/ acadErrorStatusText(errSt);    
    return;
}

nouvRec->setLinetypeObjectId(adrDB->continuousLinetype());

errSt = nouvRec->setIsHidden(true);
if (errSt != Acad::eOk)    {
    //*MSG*/ acadErrorStatusText(errSt);          
}

errSt = adrTabCalque->add(nouvRec);
if (errSt != Acad::eOk) {
    //*MSG*/ acadErrorStatusText(errSt);  
    delete nouvRec;
}
else
{
    errSt = nouvRec->setDescription(_T("Calque Anonyme"));    
    if(errSt != Acad::eOk)
    {
        //*MSG*/ acadErrorStatusText(errSt);          
    }
    nouvRec->close();
}

adrTabCalque->close();
 
▲haut de page

C#
Database adrDB = HostApplicationServices.WorkingDatabase;

using (Transaction tr = adrDB.TransactionManager.StartTransaction())
{                
    LayerTable adTableCalqs = (LayerTable)tr.GetObject(adrDB.LayerTableId, OpenMode.ForRead);
       
    if (adTableCalqs.Has("TEST"))
    {
        return;
    }

    LayerTableRecord adLTR = new LayerTableRecord();
    adLTR.Name = "TEST";
    adLTR.LinetypeObjectId = adrDB.ContinuousLinetype;
    adLTR.IsHidden = true;              
    adTableCalqs.UpgradeOpen();
    adTableCalqs.Add(adLTR);
    adLTR.Description = "Calque Anonyme";
    tr.AddNewlyCreatedDBObject(adLTR, true);

    tr.Commit();
}
 
▲haut de page