本文整理汇总了C++中AcDbEntity::setLayer方法的典型用法代码示例。如果您正苦于以下问题:C++ AcDbEntity::setLayer方法的具体用法?C++ AcDbEntity::setLayer怎么用?C++ AcDbEntity::setLayer使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类AcDbEntity
的用法示例。
在下文中一共展示了AcDbEntity::setLayer方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: asdktest5
void asdktest5 () {
//----- Select the entities
ads_name ss, en ;
if ( acedSSGet (NULL, NULL, NULL, NULL, ss) != RTNORM )
return ;
//----- Append entity IDs to the collector
long n ;
AcDbObjectId id ;
AsdkHlrCollector collector ;
acedSSLength (ss, &n) ;
for ( int i =0 ; i < n ; i++ ) {
acedSSName (ss, i, en) ;
acdbGetObjectId (id, en) ;
collector.addEntity (id) ;
}
acedSSFree (ss) ;
//----- Display a dialog box to select HLR controls, the user wants to apply to the HLR engine
AfxSetResourceHandle (_hdllInstance) ;
CControlsDlg dlg ;
dlg.mnControls =kProject | kEntity | kBlock | kHonorInternals ;
if ( dlg.DoModal () != IDOK ) {
AfxSetResourceHandle (acedGetAcadResourceInstance ()) ;
return ;
}
AfxSetResourceHandle (acedGetAcadResourceInstance ()) ;
int control =dlg.mnControls ;
acutPrintf (ACRX_T("\nAbout to call hidden Line calculation")) ;
acutPrintf (ACRX_T("\nCalling with %d Entities"), collector.getInputEntityIds ().logicalLength ()) ;
acutPrintf (ACRX_T("\nkProject %s "), control & kProject ? ACRX_T("On") : ACRX_T("Off")) ;
acutPrintf (ACRX_T("\nkShowAll %s "), control & kShowAll ? ACRX_T("On") : ACRX_T("Off")) ;
acutPrintf (ACRX_T("\nkEntity %s "), control & kEntity ? ACRX_T("On") : ACRX_T("Off")) ;
acutPrintf (ACRX_T("\nkBlock %s "), control & kBlock ? ACRX_T("On") : ACRX_T("Off")) ;
acutPrintf (ACRX_T("\nkSubentity %s "), control & kSubentity ? ACRX_T("On") : ACRX_T("Off")) ;
acutPrintf (ACRX_T("\nkHideTangents %s "), control & kHideTangents ? ACRX_T("On") : ACRX_T("Off")) ;
acutPrintf (ACRX_T("\nkCleanup %s "), control & kCleanup ? ACRX_T("On") : ACRX_T("Off")) ;
acutPrintf (ACRX_T("\nkIsolines %s "), control & kIsolines ? ACRX_T("On") : ACRX_T("Off")) ;
acutPrintf (ACRX_T("\nkUnite %s "), control & kUnite ? ACRX_T("On") : ACRX_T("Off")) ;
acutPrintf (ACRX_T("\nkReuse %s "), control & kReuse ? ACRX_T("On") : ACRX_T("Off")) ;
acutPrintf (ACRX_T("\nkProgress %s "), control & kProgress ? ACRX_T("On") : ACRX_T("Off")) ;
acutPrintf (ACRX_T("\nkHandlePoints %s "), control & kHandlePoints ? ACRX_T("On") : ACRX_T("Off")) ;
acutPrintf (ACRX_T("\nkHonorInternals %s "), control & kHonorInternals ? ACRX_T("On") : ACRX_T("Off")) ;
acutPrintf (ACRX_T("\nkMeshSilhouettes %s "), control & kMeshSilhouettes ? ACRX_T("On") : ACRX_T("Off")) ;
//----- Ask for virtual viewport settings
AcDbViewport *pVp =NULL ;
if ( !pickViewport (pVp) )
return ;
//----- Process hidden line removal
AsdkHlrEngine hlr (pVp, control) ;
hlr.run (collector) ;
delete pVp ;
//----- The following code will collect the color of the originator entity of an edge
//----- and will assign it to the resulting entity.
actrTransactionManager->startTransaction () ;
int nOutput =collector.mOutputData.logicalLength () ;
acutPrintf (ACRX_T("\nHlr returned %d curves"), nOutput) ;
for ( int j =0 ; j < nOutput ; j++ ) {
AsdkHlrData *pResult =collector.mOutputData [j] ;
AcDbEntity *pResultEntity =pResult->getResultEntity () ;
AcDbObjectId id ;
if ( postToDatabase (NULL, pResultEntity, id) != Acad::eOk ) {
acutPrintf (_T("Failed to add entity to current space.\n")) ;
break ;
}
actrTransactionManager->getObject ((AcDbObject *&)pResultEntity, id, AcDb::kForWrite) ;
AcDbObjectIdArray ids =pResult->getObjectIds () ;
int last =ids.logicalLength () - 1 ;
AcCmColor color ;
AcDbObjectId layerId ;
color.setColorIndex (0) ;
while ( last >= 0 && color.colorIndex () == 0 ) {
AcDbObjectId innerId =ids.at (last) ;
AcDbObject *pObj ;
actrTransactionManager->getObject (pObj, innerId, AcDb::kForRead) ;
AcDbEntity *pEnt =AcDbEntity::cast (pObj) ;
color =pEnt->color () ;
layerId =pEnt->layerId () ;
last-- ;
}
if ( layerId != AcDbObjectId::kNull ) {
pResultEntity->setColor (color) ;
pResultEntity->setLayer (layerId) ;
} else {
AcDbEntity *pEnt =pResult->getEntity () ;
if ( pEnt != NULL ) {
pResultEntity->setColor (pEnt->color ()) ;
pResultEntity->setLayer (pEnt->layer ()) ;
}
}
pResultEntity->close () ;
//.........这里部分代码省略.........
示例2: setInsertLayer
void setInsertLayer()
{
// Iterate through Model Space to find every instance of the EMPLOYEE block
// When found, change its layer to "USER"
Acad::ErrorStatus es;
AcDbBlockTable* pBlockTbl;
AcDbBlockTableRecord* pMS;
if ((es = acdbCurDwg()->getBlockTable(pBlockTbl, AcDb::kForRead)) == Acad::eOk)
{
//Get the Model Space record and open it for read.
if ((es = pBlockTbl->getAt(ACDB_MODEL_SPACE, pMS, AcDb::kForWrite)) != Acad::eOk)
{
acrx_abort("\nCouldn't get Model Space! Drawing corrupt.\n");
}
pBlockTbl->close();
}
// declare the appropriate iterator
// get the iterator from the object to be iterated through
// in this case, the Model Space block table record will provide the iterator
// start at the beginning of the record and skip deleted entities
AcDbBlockTableRecordIterator* pBtrIter;
if ((es = pMS->newIterator(pBtrIter)) != Acad::eOk)
{
acutPrintf("\nCouldn't create Model Space iterator: %s", acadErrorStatusText(es));
return;
}
char* blockName;
AcDbEntity* pEnt;
AcDbBlockTableRecord* pCurEntBlock;
AcDbObjectId blockId;
for (pBtrIter->start(); !pBtrIter->done(); pBtrIter->step())
{
// first open each entity for read, just to check its class
// if it's what we want, we can upgrade open later
// Don't bother with erased entities
if ((es = pBtrIter->getEntity(pEnt, AcDb::kForRead)) != Acad::eOk)
{
acutPrintf("\nCouldn't open entity: %s", acadErrorStatusText(es));
continue;
}
// check isf the entity is an instance of type AcDbBlockReference
if (pEnt->isA() != AcDbBlockReference::desc())
{
pEnt->close();
continue;
}
// get the insert's block table record and compare its name
// to make sure we've got the right block. If so, set the layer
blockId = (AcDbBlockReference::cast(pEnt))->blockTableRecord();
if (acdbOpenObject((AcDbObject*&)pCurEntBlock, blockId, AcDb::kForRead) == Acad::eOk)
{
pCurEntBlock->getName(blockName);
if (strcmp(blockName, "EMPLOYEE") == 0)
{
if (pEnt->upgradeOpen() == Acad::eOk)
// setLayer also has an overload that takes a layer ID
// but to avoid global variables we specify the layer name
pEnt->setLayer("USER");
}
pCurEntBlock->close();
acdbFree ( blockName );
}
pEnt->close();
}
// delete, rather than close, the iterator object
delete pBtrIter;
pMS->close();
return;
}
示例3: ModifyEntityLayer
void ModifyEntityLayer()
{
int nRet = 0;
ads_name entName;
ads_point ptPick;
nRet = acedEntSel(_T("\nSelect an entity to change it's layer:"), entName, ptPick);
if (nRet != RTNORM)
{
acutPrintf(_T("\nFailed to select!"));
return;
}
Acad::ErrorStatus es;
AcDbObjectId objId;
AcDbEntity* pEnt = NULL;
acdbGetObjectId(objId, entName);
es = acdbOpenAcDbEntity(pEnt, objId, AcDb::kForWrite);
if (es != Acad::eOk)
{
acutPrintf(_T("\nFailed to open entity!"));
return;
}
ACHAR szNewName[255];
_tcscpy(szNewName, _T("NewLayer"));
bool bHasDone = false;
AcDbDatabase* pCurDb = acdbHostApplicationServices()->workingDatabase();
if (pCurDb == NULL)
{
acutPrintf(_T("\nError:Current database is NULL!"));
return;
}
AcDbObjectId layerId;
AcDbLayerTable* pLayerTbl = NULL;
es = pCurDb->getLayerTable(pLayerTbl, AcDb::kForRead);
if (es == Acad::eOk)
{
if (pLayerTbl->has(szNewName))
{
es = pLayerTbl->getAt(szNewName, layerId);
if (es == Acad::eOk)
{
es = pEnt->setLayer(layerId);
if (es == Acad::eOk)
{
bHasDone = true;
}
}
}
pLayerTbl->close();
}
pEnt->close();
if (bHasDone)
{
acutPrintf(_T("\nThe layer of entity has modified to layer:\"%s\""), szNewName);
}
else
{
acutPrintf(_T("\nFailed to modify the layer of entity to layer:\"%s\""), szNewName);
}
}
示例4: AddEntityToLayer
// This command demonstrates the use of kCleanup / kReuse flags
void AddEntityToLayer (AsdkHlrCollector &collector, ACHAR *layerName) {
//----- Check layer
if ( layerName != NULL && *layerName != ACRX_T('\0') ) {
AcDbDatabase *pDb =acdbHostApplicationServices ()->workingDatabase () ;
AcDbLayerTable *pLayerTable ;
pDb->getLayerTable (pLayerTable, AcDb::kForRead) ;
if ( !pLayerTable->has (layerName) ) {
AcDbLayerTableRecord *pLayerRecord =new AcDbLayerTableRecord ;
pLayerRecord->setName (layerName) ;
pLayerTable->upgradeOpen () ;
pLayerTable->add (pLayerRecord) ;
pLayerTable->downgradeOpen () ;
pLayerRecord->close () ;
pLayerTable->close () ;
applyCurDwgLayerTableChanges () ;
} else {
pLayerTable->close () ;
}
} else {
layerName =NULL ;
}
//----- Assign color to the resulting entities
//----- red for visible edges
//----- blue for non-visible edges
//----- yellow for internal edges
int n =collector.mOutputData.logicalLength () ;
for ( int i =0 ; i < n ; i++ ) {
AsdkHlrData *p =collector.mOutputData [i] ;
AcDbEntity *pEnt =p->getResultEntity () ;
AsdkHlrData::Visibility vis =p->getVisibility () ;
if ( vis == AsdkHlrData::kVisible ) {
pEnt->setColorIndex (1) ; //----- Read
} else if ( vis == AsdkHlrData::kInternallyHidden ) {
if ( p->getHlrVisibility () == AsdkHlrData::kVisible )
pEnt->setColorIndex (2) ; //----- Yellow
else
pEnt->setColorIndex (3) ; //----- Green
} else {
pEnt->setColorIndex (5) ; //----- Blue
}
if ( layerName != NULL )
pEnt->setLayer (layerName) ;
AcDbObjectId id ;
if ( postToDatabase (NULL, pEnt, id) != Acad::eOk ) {
acutPrintf (_T("Failed to add entity to current space.\n")) ;
break ;
}
//----- Entity originator path for block reference entities
AcDbObjectIdArray ids =p->getObjectIds () ;
if ( ids.logicalLength () > 0 ) {
acutPrintf (ACRX_T("\n%ld, "), pEnt->objectId ().asOldId ()) ;
for ( int j =0 ; j < ids.logicalLength () ; j++ ) {
acutPrintf (ACRX_T("%ld, "), ids.at (j).asOldId ()) ;
}
}
pEnt->close () ;
}
}