Browse Source

change tool/map_lanetoxdr. Fix some scene bug, but not complete.

yuchuli 3 years ago
parent
commit
b531094623
2 changed files with 14 additions and 5 deletions
  1. 3 3
      src/tool/map_lanetoxodr/mainwindow.cpp
  2. 11 2
      src/tool/map_lanetoxodr/roaddigit.cpp

+ 3 - 3
src/tool/map_lanetoxodr/mainwindow.cpp

@@ -54,7 +54,7 @@ MainWindow::MainWindow(QWidget *parent) :
 
     scene = new QGraphicsScene;
 
-    mpscene = new  QGraphicsScene(-300, -300, 600, 600);
+    mpscene = new  QGraphicsScene;//(-300, -300, 600, 600);
     mpscene->setBackgroundBrush(Qt::darkGreen);
 
 
@@ -5082,7 +5082,7 @@ void MainWindow::UpdateScene()
 
 void MainWindow::UpdateSceneRoad(Road *pRoad)
 {
-    RoadDigit xrd(pRoad,1.0);
+    RoadDigit xrd(pRoad,0.5);
     std::vector<iv::RoadDigitUnit> * pvectorrdu =  xrd.GetRDU();
     int nsize = pvectorrdu->size();
     int i;
@@ -5126,7 +5126,7 @@ void MainWindow::UpdateSceneRoad(Road *pRoad)
             }
             pitem->setBrush(brushcolor);
             pitem->setPen(QPen(brushcolor,0.001));
-            scene->addItem(pitem);
+            mpscene->addItem(pitem);
             mvectorviewitem.push_back(pitem);
         }
     }

+ 11 - 2
src/tool/map_lanetoxodr/roaddigit.cpp

@@ -28,6 +28,7 @@ void RoadDigit::CalcLine(double fspace)
     iv::RoadDigitUnit rdu;
 
 
+    bool bLastGeo = false;
     for(j=0;j<mpRoad->GetGeometryBlockCount();j++)
     {
 
@@ -44,6 +45,11 @@ void RoadDigit::CalcLine(double fspace)
         x = pg->GetX();
         y = pg->GetY();
 
+        if(j == (mpRoad->GetGeometryBlockCount() -1))
+        {
+            bLastGeo = true;
+        }
+
         switch (pg->GetGeomType()) {
         case 0:
         {
@@ -58,6 +64,7 @@ void RoadDigit::CalcLine(double fspace)
             double fstep;
             if(ncount > 0)fstep = pg->GetLength()/ncount;
             int i;
+            if(bLastGeo )ncount = ncount+1;
             for(i=1;i<ncount;i++)
             {
                 double xtem,ytem;
@@ -96,7 +103,8 @@ void RoadDigit::CalcLine(double fspace)
 
                pSpiral->GetCoords(s0,rel_x,rel_y,rel_hdg);
 
-               for(k=1;k<=ncount;k++)
+               if(bLastGeo )ncount = ncount+1;
+               for(k=1;k<ncount;k++)
                {
                    pSpiral->GetCoords(s0+sstep*k,rel_x,rel_y,rel_hdg);
 
@@ -156,7 +164,8 @@ void RoadDigit::CalcLine(double fspace)
             }
 
 
-            for(k=1;k<=ncount;k++)
+            if(bLastGeo )ncount = ncount+1;
+            for(k=1;k<ncount;k++)
             {