添加三维场景操作光标变化

master
cbwu 2 years ago
parent 1d869462e9
commit 307c030a7d

@ -310,17 +310,18 @@ void GeoFeatureOperator::drawLine3D(SceneView* pSceneView, UGString datasourceNa
if(lineLayer3D!=NULL)
{
//显示对话框
emit pSceneView->showSettingFlightPointDialg();
// emit pSceneView->showSettingFlightPointDialg();
lineLayer3D->SetSelectable(true);
// pLayer3Ds->SetEditableLayer(lineLayer3D,true); //设置图层可编辑
lineLayer3D->SetEditable(true);
pLayer3Ds->SetEditableLayer(lineLayer3D,true); //设置图层可编辑
// lineLayer3D->SetEditable(true);
// pSceneControl->GetSceneEditWnd()->SetUserAction(UGSceneUserAction::suaEdit,UGEditType3D::ET3D_PolyLine); //
pSceneControl->GetSceneEditWnd()->SetUserAction(UGSceneUserAction::suaCreatePolyline);
pSceneView->isEditStateFlag = true;
qDebug()<<"*************************EditCursorShape:"<<pSceneControl->GetSceneEditWnd()->Get3DCursorShape();
// qDebug()<<"*************************:"<<pSceneControl->GetSceneEditWnd()->m_SceneWindow.Get3DCursorShape();
// qDebug()<<"*************************Edit:"<<pSceneControl->GetSceneEditWnd()->GetSubAction();
// qDebug()<<"*************************CursorShape:"<<pSceneControl->GetSceneEditWnd()->Get3DCursorShape();
}
@ -334,23 +335,25 @@ void GeoFeatureOperator::drawLine3D(SceneView *pSceneView, UGString dataName)
{
SceneControl* pSceneControl = pSceneView->GetSceneControl();
UGLayer3Ds* pLayer3Ds = pSceneControl->GetUGLayer3Ds();
// //创建临时数据集
// UGString datasetName = _U("Line3DTmp");
// UGString layer3DName = datasetName + _U("@") + ds->GetAlias(); //图层名命名为:数据集名@数据源名
// MapDataManeger mapDataMag;
// UGDatasetVector* dv = NULL;
// if(ds->GetDataset(datasetName)==NULL)
// dv = mapDataMag.createVectorSet(ds,UGDataset::LineZ,datasetName).get();
// else
// {//清空临时数据集里的全部记录
// dv = (UGDatasetVector*)(ds->GetDataset(datasetName).get());
// if(!dv->IsOpen()) dv->Open();
// UGQueryDef query;
// UGRecordsetPtr res = dv->Query(query);
// qDebug()<<"***************RecordCount:"<<res->GetRecordCount();
// res->DeleteAll();
// res->Update();
// }
/*
//创建临时数据集
UGString datasetName = _U("Line3DTmp");
UGString layer3DName = datasetName + _U("@") + ds->GetAlias(); //图层名命名为:数据集名@数据源名
MapDataManeger mapDataMag;
UGDatasetVector* dv = NULL;
if(ds->GetDataset(datasetName)==NULL)
dv = mapDataMag.createVectorSet(ds,UGDataset::LineZ,datasetName).get();
else
{//清空临时数据集里的全部记录
dv = (UGDatasetVector*)(ds->GetDataset(datasetName).get());
if(!dv->IsOpen()) dv->Open();
UGQueryDef query;
UGRecordsetPtr res = dv->Query(query);
qDebug()<<"***************RecordCount:"<<res->GetRecordCount();
res->DeleteAll();
res->Update();
}
*/
UGLayer3D* lineLayer3D = NULL;
int layerIndex = pLayer3Ds->FindNameInner(dataName);
@ -359,13 +362,10 @@ void GeoFeatureOperator::drawLine3D(SceneView *pSceneView, UGString dataName)
pLayer3Ds->TreeRemoveAt(layerIndex);
}
//添加图层
// qDebug()<<"*******************LayerCount0:"<<pLayer3Ds->GetInnerCount();
lineLayer3D = pLayer3Ds->AddLayer(dataName);
// lineLayer3D = pSceneControl->AddLayerFromDataset(ds->GetAlias(),datasetName);
// qDebug()<<"*******************LayerCount1:"<<pLayer3Ds->GetInnerCount();
lineLayer3D->SetSelectable(true);
pLayer3Ds->SetEditableLayer(lineLayer3D,true); //设置图层可编辑
// lineLayer3D->SetEditable(true);
// qDebug()<<"*******************LayerEditable:"<<lineLayer3D->GetEditable();
// pSceneControl->GetSceneEditWnd()->SetUserAction(UGSceneUserAction::suaEdit,UGEditType3D::ET3D_PolyLine); //
@ -373,7 +373,10 @@ void GeoFeatureOperator::drawLine3D(SceneView *pSceneView, UGString dataName)
pSceneView->isEditStateFlag = true;
//显示对话框
emit pSceneView->showSettingFlightPointDialg();
// emit pSceneView->showSettingFlightPointDialg();
qDebug()<<"*******************Cursor:"<<pSceneControl->GetSceneEditWnd()->Get3DCursorShape();
qDebug()<<"*******************Cursor:"<<pSceneControl->GetSceneEditWnd()->m_SceneWindow.m_n3DCursorShape;
// dv = NULL;
lineLayer3D = NULL;

@ -1277,18 +1277,18 @@ void MainWindow::loadModelData()
// pDataSource = NULL;
//模型移动测试
// UGDatasetVector* dv = (UGDatasetVector*)pDataSource->GetDataset(_U("FlightLines3D")).get(); //FlightLines3D
UGDatasetVector* dv = (UGDatasetVector*)pDataSource->GetDataset(_U("Plane")).get(); //Plane
// ShowPlane3D* plane3D = new ShowPlane3D(pSceneControl,dv);
// plane3D->setPlanesCount(1);
// plane3D->startFly();
// if(!dv->IsOpen()) dv->Open();
// UGQueryDef query;
// UGRecordsetPtr res = dv->Query(query);
// res->MoveFirst();
// qDebug()<<"*****************RecordCount:"<<res->GetRecordCount();
// UGGeometry* geometry = NULL;
// res->GetGeometry(geometry); //geometryType: GeoModelPro
if(!dv->IsOpen()) dv->Open();
UGQueryDef query;
UGRecordsetPtr res = dv->Query(query);
res->MoveFirst();
qDebug()<<"*****************RecordCount:"<<res->GetRecordCount();
UGGeometry* geometry = NULL;
res->GetGeometry(geometry); //geometryType: GeoModelPro
// qDebug()<<"*************geometryType:"<<geometry->GetType();
// UGRect2D rec = geometry->GetBounds();
// qDebug()<<"*************leftX:"<<rec.BottomLeft().x;
@ -1337,8 +1337,8 @@ void MainWindow::loadModelData()
//// qDebug()<<"********************Type:"<<geometry->GetType();
// res->Edit();
// UGGeoModelPro* model = (UGGeoModelPro*)geometry;
// model->SetPosition(UGPoint3D(119.73,32.234539,25));
UGGeoModelPro* model = (UGGeoModelPro*)geometry;
model->SetPosition(UGPoint3D(119.73,32.234539,25));
// res->SetGeometry(*model);
// res->Update();
// model->SetStyle3D(&tmpSty);
@ -1361,10 +1361,10 @@ void MainWindow::loadModelData()
// style3D.SetMarker3D(true);
// style3D.SetScaleBySymbol(true);
// style3D.SetFixedPixelSize(false);
// style3D.SetFill3DMode(UGC::/*UGFill3DMode::*/FILL_FACE);
style3D.SetFill3DMode(UGC::/*UGFill3DMode::*/FILL_FACE);
style3D.SetAltitudeMode(AltitudeMode::Absolute);
style3D.SetLineWidth(1);
style3D.SetLineColor(UGRGB(255,0,0));
// style3D.SetLineWidth(1);
// style3D.SetLineColor(UGRGB(255,0,0));
// style3D.SetFillBackColor(UGRGB(255,0,0));
// style3D.SetFillForeColor(UGRGB(255,0,0));
// style3D.SetFillColor(UGRGB(255,0,0));
@ -1409,9 +1409,21 @@ void MainWindow::loadModelData()
// kmlLayer->SetEditable(true);
// UGLayer3DModel* modelLayer3D = (UGLayer3DModel*)kmlLayer;
// UGGeoPlacemark* GP = new UGGeoPlacemark();
// GP->SetGeometry(model);
// GP->SetPosition(UGPoint3D(119.718567,32.234317,20));
UGGeoPlacemark* GP = new UGGeoPlacemark();
// UGGeoPoint3D* p = new UGGeoPoint3D();
// p->SetX(119.718567);
// p->SetY(32.234317);
// p->SetZ(20);
// GP->MakeWithGeometry(p);
GP->SetGeometry(model);
GP->SetPosition(UGPoint3D(119.718567,32.234317,20));
GP->SetName(_U("Test"));
// UGStyle3D s;
// s.SetAltitudeMode(AltitudeMode::Absolute);
UGTextStyle t;
t.SetSize(64);
GP->SetNameTextStyle(&t);
pSceneControl->GetTrackingLayer3D()->Add(GP,_U("a"));
// modelLayer3D->AddModel(model);
@ -1504,12 +1516,15 @@ void MainWindow::loadModelData()
// p->Make(UGPoint3D(119.718567,32.234317,20));
// UGGeoPlacemark* pl = new UGGeoPlacemark();
// pl->SetName(_U("Test"));
// pl->SetGeometry(model);
// pl->SetPosition(UGPoint3D(119.718567,32.234317,20));
// pl->Set3DPoint(UGPoint3D(119.718567,32.234317,20));
// pl->SetGeometry(p);
// UGStyle3D sty3D;
// sty3D.SetMarkerStyle(318); //253268
//// sty3D.SetMarker3D(true);
// sty3D.SetPointColor(UGRGB(255,0,0));
// UGColorValue3D(1,0,0);
// sty3D.SetPointColor(UGColorValue3D(1,0,0));
// sty3D.SetMarkerSize(30);
// sty3D.SetFill3DMode(UGC::/*UGFill3DMode::*/FILL_FACE);
// sty3D.SetAltitudeMode(AltitudeMode::Absolute);
@ -1550,12 +1565,12 @@ void MainWindow::loadModelData()
// UGGeoPicture* pt = (UGGeoPicture*) geometry;
// UGGeoLine3D* l = (UGGeoLine3D*) geometry;
// l->SetStyle3D(&style3D);
// UGTrackingLayer3D* trackingLayer3D = pSceneControl->GetTrackingLayer3D();
UGTrackingLayer3D* trackingLayer3D = pSceneControl->GetTrackingLayer3D();
// trackingLayer3D->SetAlwaysRender(true);
// trackingLayer3D->SetWorkspace(m_pWorkspace);
// trackingLayer3D->SetUseGeoStyle(true);
// qDebug()<<"**************TrackingCount0:"<<trackingLayer3D->GetCount();
// trackingLayer3D->Add(l,_U("picture"));
// trackingLayer3D->Add(pl,_U("picture"));
// UGStyle3D* sty1 = trackingLayer3D->GetAt(0)->GetStyle3D();
// sty1->SetLineColor(UGRGB(0,0,255));
// trackingLayer3D->GetAt(0)->SetStyle3D(&sty3D);

@ -739,111 +739,6 @@ void SceneControl::removeLayer3D(UGString layerName)
pLayer3Ds = NULL;
}
/*
void SceneControl::ReviseCursor()
{
switch(m_pUGSceneWnd->m_SceneWindow.Get3DCursorShape())
{
case UG3DCursorShape::ecBusy:
{
SetWaitCursor();
break;
}
case UGMapWnd::ecArrow:
{
setCursor(QCursor(Qt::ArrowCursor));
break;
}
case UGMapWnd::ecMarginPanLeft:
{
setCursor(QCursor(QPixmap(":/Resources/Pan_left.png"), 0, 15));
break;
}
case UGMapWnd::ecMarginPanRight:
{
setCursor(QCursor(QPixmap(":/Resources/Pan_right.png"), 30, 10));
break;
}
case UGMapWnd::ecMarginPanTop:
{
setCursor(QCursor(QPixmap(":/Resources/Pan_top.png"),10, 0));
break;
}
case UGMapWnd::ecMarginPanBottom:
{
setCursor(QCursor(QPixmap(":/Resources/Pan_bottom.png"), 10, 30));
break;
}
case UGMapWnd::ecMarginPanTopLeft:
{
setCursor(QCursor(QPixmap(":/Resources/Pan_topleft.png"), 0, 0));
break;
}
case UGMapWnd::ecMarginPanTopRight:
{
setCursor(QCursor(QPixmap(":/Resources/Pan_topright.png"), 30, 0));
break;
}
case UGMapWnd::ecMarginPanBottomRight:
{
setCursor(QCursor(QPixmap(":/Resources/Pan_bottomright.png"), 30, 30));
break;
}
case UGMapWnd::ecMarginPanBottomLeft:
{
setCursor(QCursor(QPixmap(":/Resources/Pan_bottomleft.png"), 0, 30));
break;
}
case UGMapWnd::ecZoomFree:
case UGMapWnd::ecZoomFree2:
{
setCursor(QCursor(QPixmap(":/Resources/ZoomFree.png")));
break;
}
case UGMapWnd::ecPan:
{
setCursor(QCursor(QPixmap(":/Resources/Pan.png")));
break;
}
case UGMapWnd::ecPan2:
{
setCursor(QCursor(QPixmap(":/Resources/Pan2.png")));
break;
}
case UGMapWnd::ecZoomIn:
{
setCursor(QCursor(QPixmap(":/Resources/ZoomIn.png"), 2, 2));
break;
}
case UGMapWnd::ecZoomOut:
{
setCursor(QCursor(QPixmap(":/Resources/ZoomOut.png"), 2, 2));
break;
}
case UGMapWnd::ecPointModeSelect:
case UGMapWnd::ecPointModeSelectTrue:
case UGMapWnd::ecRectModeSelect:
case UGMapWnd::ecLineModeSelect:
{
setCursor(QCursor(QPixmap(":/Resources/Select.png"), 4, 4));
break;
}
case UGMapWnd::ecDrawPolyGon:
case UGMapWnd::ecDrawPolyLine:
{
setCursor(QCursor(QPixmap(":/Resources/cross.png"), 9, 9));
break;
}
case UGMapWnd::ecDrawText:
{
setCursor(QCursor(Qt::IBeamCursor));
break;
}
default:
break;
}
}
*/
void SceneControl::MeasureDistance()

@ -2,11 +2,14 @@
void UGSTDCALL Action3DChangedCallBack(UGlong pWnd, UGSceneUserAction oldAction,UGSceneUserAction newAction)
{
// qDebug()<<"****************oldAction:"<<oldAction;
// qDebug()<<"****************newAction:"<<newAction;
qDebug()<<"****************oldAction:"<<oldAction;
qDebug()<<"****************newAction:"<<newAction;
// qDebug()<<"****************newAction:"<<newAction;
// SceneView* pSceneView = (SceneView*)pWnd;
// pSceneView->ReviseCursor(newAction);
// pSceneView = NULL;
// if(newAction==UGSceneUserAction::suaCreatePolyline)
// {
//// pSceneView->showSettingFlightPoint = true;
@ -121,6 +124,97 @@ unsigned int SceneView::getMouseOrKeyFlag(QMouseEvent* event)
return flag;
}
//设置鼠标光标形状
void SceneView::ReviseCursor(int SceneUserAction)
{
switch (SceneUserAction) {
case UGSceneUserAction::suaPan:
setCursor(QCursor(QPixmap(":/Resources/Pan2.png")));
case UGSceneUserAction::suaPanSelect:
setCursor(QCursor(QPixmap(":/Resources/Pan.png")));
break;
case UGSceneUserAction::suaCreatePoint:
case UGSceneUserAction::suaCreatePolygon:
case UGSceneUserAction::suaCreateLine:
case UGSceneUserAction::suaCreatePolyline:
case UGSceneUserAction::suaCreateRectangle:
setCursor(QCursor(QPixmap(":/Resources/cross.png"), 9, 9));
break;
case UGSceneUserAction::suaMeasureDistance:
case UGSceneUserAction::suaMeasureArea:
case UGSceneUserAction::suaMeasureHeight:
case UGSceneUserAction::suaMeasureTerrainDistance:
case UGSceneUserAction::suaMeasureTerrainArea:
case UGSceneUserAction::suaMeasureHorizontalDistance:
setCursor(QCursor(QPixmap(":/Resources/Length.png"), 9, 9));
break;
default:
break;
}
/*
switch(m_pSceneControl->GetSceneEditWnd()->m_SceneWindow.Get3DCursorShape())
{
case UG3DCursorShape::ecBusy:
{
this->setCursor(QCursor(Qt::WaitCursor));
break;
}
case UG3DCursorShape::ecArrow:
{
setCursor(QCursor(Qt::ArrowCursor));
break;
}
case UG3DCursorShape::ecZoomFree:
{
setCursor(QCursor(QPixmap(":/Resources/ZoomFree.png")));
break;
}
case UG3DCursorShape::ecPan:
{
setCursor(QCursor(QPixmap(":/Resources/Pan.png")));
break;
}
case UG3DCursorShape::ecPanMove:
{
setCursor(QCursor(QPixmap(":/Resources/Pan2.png")));
break;
}
case UG3DCursorShape::ecZoomIn:
{
setCursor(QCursor(QPixmap(":/Resources/ZoomIn.png"), 2, 2));
break;
}
case UG3DCursorShape::ecZoomOut:
{
setCursor(QCursor(QPixmap(":/Resources/ZoomOut.png"), 2, 2));
break;
}
case UG3DCursorShape::ecPointModeSelect:
case UG3DCursorShape::ecPointModeSelectTrue:
case UG3DCursorShape::ecRectModeSelect:
case UG3DCursorShape::ecLineModeSelect:
{
setCursor(QCursor(QPixmap(":/Resources/Select.png"), 4, 4));
break;
}
case UG3DCursorShape::ecDrawPolyGon:
case UG3DCursorShape::ecDrawPolyLine:
{
setCursor(QCursor(QPixmap(":/Resources/cross.png"), 9, 9));
break;
}
case UG3DCursorShape::ecDrawText:
{
setCursor(QCursor(Qt::IBeamCursor));
break;
}
default:
break;
}
*/
}
void SceneView::paintEvent(QPaintEvent* event)
{
@ -200,6 +294,7 @@ void SceneView::mouseMoveEvent(QMouseEvent* event)
{
m_pSceneControl->OnMouseMove(getMouseOrKeyFlag(event), event->x(), event->y());
}
ReviseCursor(m_pSceneControl->GetSceneEditWnd()->GetUserAction());
}
void SceneView::resizeEvent(QResizeEvent* event)

@ -32,10 +32,13 @@ public:
bool isEditStateFlag; //编辑状态
//method
private:
unsigned int getMouseOrKeyFlag(QMouseEvent* event);
void ReviseCursor(int SceneUserAction); //设置鼠标光标形状
// override parent
protected:
virtual void paintEvent(QPaintEvent* event);
@ -47,7 +50,6 @@ protected:
virtual void keyPressEvent(QKeyEvent* event);
virtual void mouseDoubleClickEvent(QMouseEvent *event);
private:
SceneControl* m_pSceneControl;
bool isRenderTimerStarted;

Loading…
Cancel
Save