void DrawCmd::DrawDetermineHole( void ) { AcDbObjectId objId; if(!CheackTubeLenth(objId)) return; AcGePoint3d pt,insertPt; double angle; if( !ArxUtilHelper::PromptPt( _T( "\n请指定测定孔的插入点坐标:" ), pt ) ) return; if( !GetClosePtAndAngle( objId, pt, angle ) ) return; insertPt = pt; DetermineHoleGE* pDetermineHoleGE = new DetermineHoleGE( insertPt, angle ); if( pDetermineHoleGE == 0 ) return; CString GEName = _T("测定孔"); CheakLayerExit(GEName,7,AcDb::kLnWt025); pDetermineHoleGE->setLayer(GEName); pDetermineHoleGE->setRelatedGE( objId ); // 初始化并提交到数据库 if( !ArxUtilHelper::PostToModelSpace( pDetermineHoleGE ) ) delete pDetermineHoleGE; }
void DrawCmd::DrawWindLibrary( void ) { AcDbObjectId objId = ArxUtilHelper::SelectObject( _T( "请选择一条巷道:" ) ); if( objId.isNull() ) return; if( !ArxUtilHelper::IsEqualType( _T( "LinkedGE" ), objId ) ) return; AcGePoint3d pt,insertPt; double angle; if( !ArxUtilHelper::PromptPt( _T( "\n请指定风库的插入点坐标:" ), pt ) ) return; if( !GetClosePtAndAngle( objId, pt, angle ) ) return; AcGeVector3d v = AcGeVector3d(AcGeVector3d::kXAxis); v.rotateBy(angle - PI/2,AcGeVector3d::kZAxis); v.normalize(); insertPt = pt + v * 60; WindLibrary* pWindLib = new WindLibrary( insertPt, angle ); if( pWindLib == 0 ) return; pWindLib->setRelatedGE( objId ); // 关联巷道 // 初始化并提交到数据库 if( !ArxUtilHelper::PostToModelSpace( pWindLib ) ) delete pWindLib; }
void DrawCmd::DrawGasPump( void ) { AcDbObjectId objId; if(!CheackTubeLenth(objId)) return; AcGePoint3d pt; double angle; if( !ArxUtilHelper::PromptPt( _T( "\n请指定瓦斯泵的插入点坐标:" ), pt ) ) return; if( !GetClosePtAndAngle( objId, pt, angle ) ) return; AcGePoint3d spt,ept; GetSEPt(objId,spt,ept); //SplitByPoint(objId,spt,ept,pt); AcGeVector3d v( AcGeVector3d::kXAxis ); v.rotateBy( angle, AcGeVector3d::kZAxis ); v.normalize(); AcGePoint3d pt2 = pt + v*3; GasPumpGE* pGasPump = new GasPumpGE( pt, pt2 ); if( pGasPump == 0 ) return; //pGasPump-> CString GEName = _T("瓦斯泵"); CheakLayerExit(GEName,7,AcDb::kLnWt025); pGasPump->setLayer(GEName); //pGasPump->setRelatedGE( objId ); //// 初始化并提交到数据库 if( !ArxUtilHelper::PostToModelSpace( pGasPump ) ) delete pGasPump; }
void DrawCmd::DrawLocalFan() { AcDbObjectId objId = ArxUtilHelper::SelectObject( _T( "请选择一条巷道:" ) ); if( objId.isNull() ) return; if( !ArxUtilHelper::IsEqualType( _T( "LinkedGE" ), objId ) ) return; //if( !ArxUtilHelper::IsEqualType( _T( "Chimney" ), objId ) ) return; AcDbObjectIdArray objIds; DrawHelper::GetTagGEById2( objId, _T( "LocalFan" ), objIds ); //if( !objIds.isEmpty() ) //{ // AfxMessageBox( _T( "该掘进工作面已设置了局部通风机!" ) ); // return; //} AcGePoint3d pt,insertPt; double angle; //if( !GetClosePtAndAngle( objId, pt, angle ) ) return; if( !ArxUtilHelper::PromptPt( _T( "\n请指定局扇的插入点坐标:" ), pt ) ) return; insertPt = pt; if( !GetClosePtAndAngle( objId, pt, angle ) ) return; Fan* pFan = new LocalFan( insertPt, angle ); if( pFan == 0 ) return; pFan->setRelatedGE( objId ); // 关联巷道 // 初始化并提交到数据库 if( !ArxUtilHelper::PostToModelSpace( pFan ) ) delete pFan; }
void DrawCmd::DrawJoint() { AcDbObjectId objId = ArxUtilHelper::SelectObject( _T( "请选择一条巷道、或掘进工作面:" ) ); if( objId.isNull() ) return; if( !ArxUtilHelper::IsEqualType( _T( "LinkedGE" ), objId ) ) return; AcTransaction* pTrans = actrTransactionManager->startTransaction(); if( pTrans == 0 ) return; AcDbObject* pObj; if( Acad::eOk != pTrans->getObject( pObj, objId, AcDb::kForWrite ) ) { actrTransactionManager->abortTransaction(); return; } LinkedGE* pEdge = LinkedGE::cast( pObj ); if( pEdge == 0 ) { actrTransactionManager->abortTransaction(); return; } actrTransactionManager->endTransaction(); AcGePoint3d spt,ept; pEdge->getSEPoint(spt,ept); AcGePoint3d pt; if( !PromptInsertPt( objId, pt ) ) return; double angle; if( !GetClosePtAndAngle( objId, pt, angle ) ) return; SplitByPoint(objId,spt,ept,pt); CreatJoint( objId, pt, angle ); }
void DrawCmd::DrawDirection( void ) { AcDbObjectId objId = ArxUtilHelper::SelectObject( _T( "请选择一个巷道、采掘工作面、硐室:" ) ); if( objId.isNull() ) return; if( !ArxUtilHelper::IsEqualType( _T( "LinkedGE" ), objId ) ) return; AcGePoint3d pt; if( !PromptInsertPt( objId, pt ) ) return; double angle; if( !GetClosePtAndAngle( objId, pt, angle ) ) return; CreateDirection( objId, pt, angle ); }
void DrawCmd::DrawCasement( int flag ) { AcDbObjectId objId = ArxUtilHelper::SelectObject( _T( "请选择一个巷道、回采工作面、硐室:" ) ); if( objId.isNull() ) return; if( !ArxUtilHelper::IsEqualType( _T( "LinkedGE" ), objId ) ) return; if( ArxUtilHelper::IsEqualType( _T( "TTunnel" ), objId ) ) return; AcGePoint3d pt; if( !PromptInsertPt( objId, pt ) ) return; double angle; if( !GetClosePtAndAngle( objId, pt, angle ) ) return; CreateCasement( flag, objId, pt, angle ); }
void DrawCmd::DrawGate( int flag ) { AcDbObjectId objId = ArxUtilHelper::SelectObject( _T( "请选择一个巷道、硐室:" ) ); if( objId.isNull() ) return; if( !ArxUtilHelper::IsEqualType( _T( "Tunnel" ), objId ) && !ArxUtilHelper::IsEqualType( _T( "StorageGE" ), objId ) ) return; AcGePoint3d pt; if( !PromptInsertPt( objId, pt ) ) return; double angle; if( !GetClosePtAndAngle( objId, pt, angle ) ) return; CreateGate( flag, objId, pt, angle ); }
void DrawCmd::DrawGasFlow() { AcDbObjectId objId = ArxUtilHelper::SelectObject( _T( "请选择一条管路:" ) ); if( objId.isNull() ) return; if( !ArxUtilHelper::IsEqualType( _T( "GasTube" ), objId ) ) return; AcGePoint3d pt; if( !PromptInsertPt( objId, pt ) ) return; double angle; if( !GetClosePtAndAngle( objId, pt, angle ) ) return; CreateGasFlow( objId, pt, angle ); //CString v; //DataHelper::GetPropertyData(objId,_T("瓦斯流量"),v); //acutPrintf(_T("\n值:%s"),v); }
void DrawCmd::DrawMainFan() { AcDbObjectId objId = ArxUtilHelper::SelectObject( _T( "请选择一条巷道:" ) ); if( objId.isNull() ) return; if( !ArxUtilHelper::IsEqualType( _T( "Tunnel" ), objId ) ) return; AcGePoint3d pt; if( !PromptInsertPt( objId, pt ) ) return; double angle; if( !GetClosePtAndAngle( objId, pt, angle ) ) return; Fan* pFan = new MainFan( pt, angle ); if( pFan == 0 ) return; pFan->setRelatedGE( objId ); // 关联巷道 // 初始化并提交到数据库 if( !ArxUtilHelper::PostToModelSpace( pFan ) ) delete pFan; }
static void DrawSensor(AcDbObjectId& objId,const CString& GEName,AcGePoint3d& pt,double& angle) { objId = ArxUtilHelper::SelectObject( _T( "请选择一条管路:" ) ); if( objId.isNull() ) return; if( !ArxUtilHelper::IsEqualType( _T( "GasTube" ), objId ) ) return; //CString GEName = _T("温度传感器"); // AcGePoint3d pt; if( !PromptInsertPt( objId, pt ) ) return; // double angle; if( !GetClosePtAndAngle( objId, pt, angle ) ) return; AcGeVector3d v( AcGeVector3d::kXAxis ); v.rotateBy( angle, AcGeVector3d::kZAxis ); if( v.x < 0 ) v.negate(); angle = v.angleTo( AcGeVector3d::kXAxis, -AcGeVector3d::kZAxis ); v.normalize(); v.rotateBy( PI / 2, AcGeVector3d::kZAxis ); // 始终与文字反向 pt = pt + 6 * v; }
void DrawCmd::DrawDirection( void ) { AcDbObjectId objId = ArxUtilHelper::SelectObject( _T( "请选择一个需要标明方向的图元:" ) ); if( objId.isNull() ) return; if( !ArxUtilHelper::IsEqualType( _T( "LinkedGE" ), objId ) ) return; if( ArxUtilHelper::IsEqualType( _T( "DrillGE" ), objId ) ) return; AcDbObject* pObj; acdbOpenObject( pObj, objId, AcDb::kForRead ); AcGePoint3d pt; if( !PromptInsertPt( objId, pt ) ) return; //ArcTunnel *pArcTunnel = ArcTunnel::cast(pObj); LinkedGE* pEdge = LinkedGE::cast( pObj ); //TTunnel* pTTunel = TTunnel::cast(pObj); pObj->close(); int colorIndx = pEdge->colorIndex(); //acutPrintf(_T("\n颜色索引:%d"),colorIndx); //CheakLayerExit(_T("流动方向"),colorIndx); AcGePoint3d spt,ept; pEdge->getSEPoint( spt, ept ); AcGeVector3d v = ept - spt; double angle = v.angleTo(AcGeVector3d::kXAxis, -AcGeVector3d::kZAxis); if( !GetClosePtAndAngle( objId, pt, angle ) ) return; //bool isOppositeDir = false; //CString method; //CString name; //DataHelper::GetPropertyData( objId, _T( "名称" ), name ); //if (ArxUtilHelper::IsEqualType( _T( "TTunnel" ), objId )) //{ // DataHelper::GetPropertyData( objId, _T( "通风方法" ), method ); //} //else //{ // AcDbObjectId tWorkId = GetRelatedTW(objId); // DataHelper::GetPropertyData( tWorkId, _T( "通风方法" ), method ); //} //if ( _T("进风巷") != name && _T("回风巷") != name) //{ // if (_T("压入式") == method || _T("长压短抽") == method) // { // isOppositeDir = true; // } //} //if (true == isOppositeDir) //{ // angle = PI + angle; //} angle = ControlDirByMethods(objId,angle); CreateDirection( objId, pt, angle, colorIndx ); }