本文整理汇总了C++中AcDbObjectIdArray::isEmpty方法的典型用法代码示例。如果您正苦于以下问题:C++ AcDbObjectIdArray::isEmpty方法的具体用法?C++ AcDbObjectIdArray::isEmpty怎么用?C++ AcDbObjectIdArray::isEmpty使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类AcDbObjectIdArray
的用法示例。
在下文中一共展示了AcDbObjectIdArray::isEmpty方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ConfigDraw
void DrawHelper::ConfigDraw( const CString& geType, const CString& drawName )
{
MineGEDraw* pDraw = MineGEDrawSystem::GetInstance()->getGEDraw( geType, drawName );
if( pDraw == 0 ) return; // 该绘制效果不存在
pDraw->configExtraParams(); // 配置附加参数
AcDbObjectIdArray objIds;
ArxDataTool::GetEntsByType( geType, objIds, false );
if( objIds.isEmpty() ) return; // dwg图形中没有任何geType类型图元
AcTransaction* pTrans = actrTransactionManager->startTransaction();
if( pTrans == 0 ) return;
int len = objIds.length();
for( int i = 0; i < len; i++ )
{
AcDbObject* pObj;
if( Acad::eOk != pTrans->getObject( pObj, objIds.at( i ), AcDb::kForWrite ) ) continue;
MineGE* pGE = MineGE::cast( pObj );
if( pGE == 0 ) continue;
pGE->configDraw( pDraw->isA()->name() ); // 更新extra param
pGE->recordGraphicsModified( true ); // 更新图形
}
actrTransactionManager->endTransaction();
AcRxClass* pClass = AcRxClass::cast( acrxClassDictionary->at( geType ) );
if( pClass != 0 && pClass->isDerivedFrom( LinkedGE::desc() ) )
{
UpdateLinkedGE( objIds );
}
}
示例2: DrawChimney
void DrawCmd::DrawChimney( void )
{
acutPrintf( _T( "\n绘制风筒测试..." ) );
AcDbObjectId objId = ArxUtilHelper::SelectObject( _T( "请选择一个掘进工作面:" ) );
if( objId.isNull() ) return;
if( !ArxUtilHelper::IsEqualType( _T( "TTunnel" ), objId ) ) return;
AcDbObjectIdArray objIds;
DrawHelper::GetTagGEById2( objId, _T( "Chimney" ), objIds );
if( !objIds.isEmpty() )
{
AfxMessageBox( _T( "该掘进工作面已设置了风筒!" ) );
return;
}
AcGePoint3dArray pts;
PolyLineJig jig;
if( !jig.doJig( pts ) ) return;
int len = pts.length();
acutPrintf( _T( "\n点个数:%d" ), len );
if( len < 2 ) return;
Chimney* pChimney = new Chimney();
pChimney->setRelatedGE( objId ); // 关联的图元必须是掘进工作面
for( int i = 0; i < len; i++ ) pChimney->addControlPoint( pts[i] );
// 初始化并提交到数据库
if( !ArxUtilHelper::PostToModelSpace( pChimney ) ) delete pChimney;
}
示例3: SwitchDraw
void DrawHelper::SwitchDraw( const CString& geType, const CString& drawName )
{
// 设置当前可视化效果
if( !SetCurDraw( geType, drawName ) ) return;
// 更新所有指定类型的图元
AcDbObjectIdArray objIds;
ArxDataTool::GetEntsByType( geType, objIds, false );
if( objIds.isEmpty() ) return; // dwg图形中没有任何MineGE类型图元
// 将所有geType类型图元的绘制效果更新
AcTransaction* pTrans = actrTransactionManager->startTransaction();
if( pTrans == 0 ) return;
int len = objIds.length();
for( int i = 0; i < len; i++ )
{
AcDbObject* pObj;
if( Acad::eOk != pTrans->getObject( pObj, objIds.at( i ), AcDb::kForWrite ) ) continue;
MineGE* pGE = MineGE::cast( pObj );
if( pGE == 0 ) continue;
pGE->updateDraw(); // 更细可视化效果指针
//pGE->recordGraphicsModified(true); // 更新图形
}
actrTransactionManager->endTransaction();
AcRxClass* pClass = AcRxClass::cast( acrxClassDictionary->at( geType ) );
if( pClass != 0 && pClass->isDerivedFrom( LinkedGE::desc() ) )
{
UpdateLinkedGE( objIds );
}
}
示例4: SelectEntities
bool ArxEntityHelper::SelectEntities( const AcDbObjectIdArray& objIds )
{
//acedSSSetFirst(NULL, NULL);
if( objIds.isEmpty() ) return false;
ads_name ss;
//创建一个空的选择集
if(RTNORM != acedSSAdd( NULL, NULL, ss )) return false;
bool ret = true;
for(int i=0;i<objIds.length();i++)
{
ads_name ename;
if( Acad::eOk != acdbGetAdsName( ename, objIds[i] ) )
{
ret = false;;
break;
}
if( RTNORM != acedSSAdd( ename, ss, ss ) ) // 添加到选择集
{
ret = false;;
break;
}
}
if(ret)
{
acedSSSetFirst( ss, NULL ); // 高亮选中
}
acedSSFree( ss ); // 释放选择集
return ret;
}
示例5: GetDataObjectFromExtDict
// 从图元的扩展词典中查找数据对象
static void GetDataObjectFromExtDict( AcDbObjectIdArray& dbObjIds )
{
AcDbObjectIdArray allObjIds;
ArxDataTool::GetEntsByType( _T( "MineGE" ), allObjIds, true );
// 判断是否数据对象DataObject
// 且类型名称==type
if( allObjIds.isEmpty() ) return;
AcTransaction* pTrans = actrTransactionManager->startTransaction();
if( pTrans == 0 ) return;
int len = allObjIds.length();
for( int i = 0; i < len; i++ )
{
AcDbObject* pObj;
if( Acad::eOk != pTrans->getObject( pObj, allObjIds[i], AcDb::kForRead ) ) continue;
MineGE* pGE = MineGE::cast( pObj );
if( pGE == 0 ) continue;
AcDbObjectId dbObjId = pGE->getDataObject();
if( !dbObjId.isNull() )
{
dbObjIds.append( dbObjId );
}
}
actrTransactionManager->endTransaction();
}
示例6: DrawLocalFan
void DrawCmd::DrawLocalFan()
{
AcDbObjectId objId = ArxUtilHelper::SelectObject( _T( "请选择一个掘进工作面:" ) );
if( objId.isNull() ) return;
if( !ArxUtilHelper::IsEqualType( _T( "TTunnel" ), objId ) ) return;
AcDbObjectIdArray objIds;
DrawHelper::GetTagGEById2( objId, _T( "LocalFan" ), objIds );
if( !objIds.isEmpty() )
{
AfxMessageBox( _T( "该掘进工作面已设置了局部通风机!" ) );
return;
}
AcGePoint3d pt;
if( !ArxUtilHelper::PromptPt( _T( "\n请指定局扇的插入点坐标:" ), pt ) ) return;
Fan* pFan = new LocalFan( pt, 0 ); // 目前假设局扇的角度为0(实际绘图中局扇是没有方向的)
if( pFan == 0 ) return;
pFan->setRelatedGE( objId ); // 关联巷道
// 初始化并提交到数据库
if( !ArxUtilHelper::PostToModelSpace( pFan ) ) delete pFan;
}
示例7:
void DrawHelper::GetTagGEById2( const AcDbObjectId& objId, const CString& geType, AcDbObjectIdArray& objIds )
{
// 查找图元ObjId关联的所有标签
AcDbObjectIdArray allObjIds;
DrawHelper::GetAllTagGEById( objId, allObjIds );
if( allObjIds.isEmpty() ) return;
// 筛选出类型为geType的tag
GetTagGEById2_Helper( geType, allObjIds, objIds );
}
示例8:
void ArxEntityHelper::EraseObjects2( const AcDbObjectIdArray& objIds, Adesk::Boolean erasing )
{
if( objIds.isEmpty() ) return;
int len = objIds.length();
for( int i = 0; i < len; i++ )
{
EraseObject2( objIds[i], erasing );
}
}
示例9: DrawEffectRanGE
void DrawCmd::DrawEffectRanGE()
{
AcDbObjectIdArray ttunels;
DrawHelper::FindMineGEs(_T("TTunnel"),ttunels);
int len = ttunels.length();
if(ttunels.isEmpty()) return;
for (int i = 0; i < len; i++)
{
EffectRanDrawed(ttunels[i]);
}
}
示例10: DrawQTagGE
void DrawCmd::DrawQTagGE()
{
AcDbObjectIdArray chims;
DrawHelper::FindMineGEs(_T("Chimney"),chims);
int len = chims.length();
//acutPrintf(_T("\n风筒数:%d"),len);
if(chims.isEmpty()) return;
for (int i = 0; i < len; i++)
{
QTagGEDrawed(chims[i]);
}
}
示例11: GetContourInfoOnLayer
static AcDbObjectId GetContourInfoOnLayer( const CString& layer )
{
AcDbObjectIdArray allObjIds;
LayerHelper::GetAllEntitiesOnLayer( layer, allObjIds );
AcDbObjectIdArray objIds;
ArxDataTool::FilterEntsByType( _T( "ContourInfo" ), allObjIds, objIds );
if( objIds.isEmpty() )
return AcDbObjectId::kNull;
else
return objIds[0];
}
示例12: EffectRanDrawed
static void EffectRanDrawed(AcDbObjectId ttunel)
{
AcTransaction *pTrans = actrTransactionManager->startTransaction();
if ( 0 == pTrans ) return;
AcDbObject *pObj;
if (Acad::eOk != pTrans->getObject(pObj,ttunel,AcDb::kForRead)) return;
TTunnel *pTTunnel = TTunnel::cast(pObj);
if ( 0 == pTTunnel)
{
actrTransactionManager->abortTransaction();
return;
}
AcGePoint3d spt,ept;
pTTunnel->getSEPoint(spt,ept);
double angle = pTTunnel->getAngle();
actrTransactionManager->endTransaction();
AcDbObjectIdArray eTags;
DrawHelper::GetTagGEById2( ttunel, _T( "EffectRanTagGE" ), eTags );
if (!eTags.isEmpty())
{
ArxEntityHelper::EraseObjects( eTags, true );
}
AcGeVector3d v = ept - spt;
double diatance = v.length();
CString area,way;
if(!DataHelper::GetPropertyData(ttunel,_T("断面面积"),area)) return;
if(!DataHelper::GetPropertyData(ttunel,_T("通风方法"),way)) return;
double minDistan,maxDistan;
if(way.IsEmpty()) return;
if(area.IsEmpty()) return;
if (_T("压入式") == way || _T("长压短抽") == way)
{
minDistan = 4*sqrtf(_tstof(area));
maxDistan = 5*sqrtf(_tstof(area));
}
else
{
minDistan = 0;
maxDistan = 1.5*sqrtf(_tstof(area));
}
EffectRanTagGE *pTag = new EffectRanTagGE(ept,angle,minDistan,maxDistan,diatance*0.1);
if (0 == pTag) return;
pTag->setRelatedGE(ttunel);
if( !ArxUtilHelper::PostToModelSpace( pTag ) ) delete pTag;
}
示例13: UpdateAllWindStationData
void DrawCmd::UpdateAllWindStationData()
{
// 查找所有的测风站
// 将所在宿主上的面积、风速、风量数据读取到测风站中
AcDbObjectIdArray objIds;
DrawHelper::FindMineGEs( _T( "WindStation" ), objIds );
if( objIds.isEmpty() ) return;
AcTransaction* pTrans = actrTransactionManager->startTransaction();
if( pTrans == 0 ) return;
AcDbObjectIdArray geObjIds;
int len = objIds.length();
bool ret = true;
for( int i = 0; i < len; i++ )
{
AcDbObject* pObj;
if( Acad::eOk != pTrans->getObject( pObj, objIds[i], AcDb::kForRead ) )
{
ret = false;
break;
}
TagGE* pTag = TagGE::cast( pObj );
if( pTag == 0 )
{
ret = false;
break;
}
geObjIds.append( pTag->getRelatedGE() );
}
actrTransactionManager->endTransaction();
if( !ret )
{
geObjIds.removeAll();
}
else
{
//assert(objIds.length() == geObjIds.length());
int len = objIds.length();
for( int i = 0; i < len; i++ )
{
ReadWriteData( geObjIds[i], _T( "断面面积" ), objIds[i], _T( "测试断面面积" ) );
ReadWriteData( geObjIds[i], _T( "风速" ), objIds[i], _T( "测试风速" ) );
ReadWriteData( geObjIds[i], _T( "风量" ), objIds[i], _T( "测试风量" ) );
}
}
}
示例14: AddField
bool FieldHelper::AddField( const CString& type, const CString& field )
{
if( IsEmptyString( type ) || IsEmptyString( field ) ) return false;
bool ret = AddField_Helper( PROPERTY_DATA_FIELD_DICT, type, field );
if( ret )
{
AcDbObjectIdArray objIds;
GetDataObjectsByType( type, objIds );
if( !objIds.isEmpty() )
{
AddFieldToDataObject( objIds );
}
}
return ret;
}
示例15: EraseObjects
void ArxEntityHelper::EraseObjects( const AcDbObjectIdArray& objIds, Adesk::Boolean erasing )
{
if( objIds.isEmpty() ) return;
AcTransaction* pTrans = actrTransactionManager->startTransaction();
if( pTrans == 0 ) return;
int len = objIds.length();
for( int i = 0; i < len; i++ )
{
AcDbObject* pObj;
if( Acad::eOk != pTrans->getObject( pObj, objIds[i], AcDb::kForWrite, !erasing ) ) continue;
pObj->erase( erasing ); // (反)删除图元
}
actrTransactionManager->endTransaction();
}