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; }
static AcGePoint3dArray getControlPts(AcDbObjectId objId) { AcTransaction *pTrans = actrTransactionManager->startTransaction(); if (0 == pTrans) return NULL; AcDbObject *pObj; if (Acad::eOk != pTrans->getObject(pObj,objId,AcDb::kForRead)) return NULL; Chimney *chim = Chimney::cast(pObj); AcGePoint3dArray pts = chim->getControlPoint(); actrTransactionManager->endTransaction(); return pts; }
void DrawCmd::DrawChimney( void ) { //acutPrintf( _T( "\n绘制风筒测试..." ) ); AcDbObjectId objId = ArxUtilHelper::SelectObject( _T( "请选择风筒所对应的局扇:" ) ); if( objId.isNull() ) return; if( !ArxUtilHelper::IsEqualType( _T( "LocalFan" ), objId ) ) return; //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; AcDbObjectIdArray objIds; DrawHelper::GetTagGEById2( objId, _T( "Chimney" ), objIds ); //将同一局扇相连的风筒合并成一段 //int numChim = objIds.length(); //for(int i = 0; i < numChim-1; i++) //{ // Merging(objIds[i],objIds[i+1]); //} }
static void QTagGEDrawed(const AcDbObjectId& chimId) { AcTransaction *pTrans = actrTransactionManager->startTransaction(); if ( 0 == pTrans ) return; AcDbObject *pObj; if (Acad::eOk != pTrans->getObject(pObj,chimId,AcDb::kForRead)) return; Chimney *pChim = Chimney::cast(pObj); if ( 0 == pChim) { actrTransactionManager->abortTransaction(); return; } AcGePoint3dArray ctlPts = pChim->getControlPoint(); AcDbObjectId fanId; if(!DrawHelper::GetHostGE(chimId,fanId)) return; if (Acad::eOk != pTrans->getObject(pObj,fanId,AcDb::kForRead)) return; LocalFan *pFan = LocalFan::cast(pObj); if ( 0 == pFan) { actrTransactionManager->abortTransaction(); return; } AcGePoint3d insertPt = pFan->getInsertPt(); actrTransactionManager->endTransaction(); AcDbObjectIdArray QTags; DrawHelper::GetTagGEById2( chimId, _T( "QTagGE" ), QTags ); if (!QTags.isEmpty()) { ArxEntityHelper::EraseObjects( QTags, true ); } CString inQStr,outQStr; DataHelper::GetPropertyData(chimId,_T("入口风量(m3/s)"),inQStr); DataHelper::GetPropertyData(chimId,_T("出口风量(m3/s)"),outQStr); CString way; DataHelper::GetPropertyData(fanId,_T("工作方式"),way); if(way.IsEmpty() || inQStr.IsEmpty() || outQStr.IsEmpty()) return; QTagGE *pInQTag,*pOutQTag; if( _T("压入式") == way ) { pInQTag = new QTagGE(ctlPts[0],_tstof(inQStr)); if( pInQTag == 0 ) return; pOutQTag = new QTagGE(ctlPts[ctlPts.length()-1],_tstof(outQStr)); if( pOutQTag == 0 ) return; } if( _T("抽出式") == way ) { pOutQTag = new QTagGE(ctlPts[0],_tstof(outQStr)); if( pOutQTag == 0 ) return; pInQTag = new QTagGE(ctlPts[ctlPts.length()-1],_tstof(inQStr)); if( pInQTag == 0 ) return; } pOutQTag->setRelatedGE( chimId ); // 关联风筒 pInQTag->setRelatedGE( chimId ); // 关联风筒 // 初始化并提交到数据库 if( !ArxUtilHelper::PostToModelSpace( pOutQTag ) ) delete pOutQTag; if( !ArxUtilHelper::PostToModelSpace( pInQTag ) ) delete pInQTag; }