Browse Source

change map_lanetoxodr.

yuchuli 2 years ago
parent
commit
ba3d1b916b

+ 77 - 0
src/tool/map_lanetoxodr/dialogaddroadfromcda.cpp

@@ -5,6 +5,8 @@
 #include <iostream>
 #include <QMessageBox>
 
+#include <math.h>
+
 std::string cda_lanetype_sel[9] = {"shoulder","border","driving","stop","none","parking","biking","sidewalk",
                                "median"};
 
@@ -162,3 +164,78 @@ void DialogAddRoadFromCDA::on_comboBox_geo_currentIndexChanged(int index)
     ui->lineEdit_georadius->setText(QString::number(pgeo->mfradius));
     ui->lineEdit_geolen->setText(QString::number(pgeo->mflen));
 }
+
+void DialogAddRoadFromCDA::on_pushButton_laneadd_clicked()
+{
+   iv::cdaroad * pcdaroad = &mcdaroad;
+   iv::cdalane xlane;
+   xlane.mflanewidth = ui->lineEdit_lanewidth->text().toDouble();
+   if(xlane.mflanewidth<=0)
+   {
+       QMessageBox::warning(this,tr("Warning"),tr("Lane Width Error."),QMessageBox::YesAll);
+       return;
+   }
+   xlane.mnlanemarkcolor = ui->comboBox_lanecolor->currentIndex();
+   xlane.mnlanemarktype = ui->comboBox_lanemarktype->currentIndex();
+   xlane.mnlanetype = ui->comboBox_lanetype->currentIndex();
+   int nlanecount = static_cast<int>(pcdaroad->mvectorlane.size()) ;
+   pcdaroad->mvectorlane.push_back(xlane);
+   ui->comboBox_Lane->addItem(QString(tr("车道"))+QString::number(nlanecount+1));
+   ui->comboBox_Lane->setCurrentIndex(nlanecount);
+   ui->lineEdit_roadlanecount->setText(QString::number(nlanecount+1));
+}
+
+void DialogAddRoadFromCDA::on_pushButton_lanedel_clicked()
+{
+    iv::cdaroad * pcdaroad = &mcdaroad;
+    if(pcdaroad->mvectorlane.size() == 0)
+    {
+        QMessageBox::warning(this,tr("Warning"),tr("No Lane."),QMessageBox::YesAll);
+        return;
+    }
+    int index = ui->comboBox_Lane->currentIndex();
+    pcdaroad->mvectorlane.erase(pcdaroad->mvectorlane.begin() + index);
+
+    int nlanecount = static_cast<int>(pcdaroad->mvectorlane.size());
+    int i;
+    ui->comboBox_Lane->clear();
+    for(i=0;i<nlanecount;i++)
+    {
+        ui->comboBox_Lane->addItem(QString(tr("车道"))+QString::number(i+1));
+    }
+    ui->lineEdit_roadlanecount->setText(QString::number(nlanecount));
+
+    if(index<nlanecount)
+    {
+        ui->comboBox_Lane->setCurrentIndex(index);
+    }
+    else
+    {
+        ui->comboBox_Lane->setCurrentIndex((nlanecount-1));
+    }
+}
+
+void DialogAddRoadFromCDA::on_pushButton_lanechange_clicked()
+{
+    iv::cdaroad * pcdaroad = &mcdaroad;
+    if(pcdaroad->mvectorlane.size() == 0)
+    {
+        QMessageBox::warning(this,tr("Warning"),tr("No Lane."),QMessageBox::YesAll);
+        return;
+    }
+    int index = ui->comboBox_Lane->currentIndex();
+    double flanewidth = ui->lineEdit_lanewidth->text().toDouble();
+    if(flanewidth<=0)
+    {
+        QMessageBox::warning(this,tr("Warning"),tr("Lane Width Error."),QMessageBox::YesAll);
+        return;
+    }
+
+    iv::cdalane * plane = &pcdaroad->mvectorlane[index];
+    plane->mflanewidth = flanewidth;
+    plane->mnlanemarkcolor = ui->comboBox_lanecolor->currentIndex();
+    plane->mnlanemarktype = ui->comboBox_lanemarktype->currentIndex();
+    plane->mnlanetype = ui->comboBox_lanetype->currentIndex();
+    ui->comboBox_Lane->setCurrentIndex(index);
+    QMessageBox::information(this,tr("Info"),tr("Change Lane Successfully."),QMessageBox::YesAll);
+}

+ 6 - 0
src/tool/map_lanetoxodr/dialogaddroadfromcda.h

@@ -25,6 +25,12 @@ private slots:
 
     void on_comboBox_geo_currentIndexChanged(int index);
 
+    void on_pushButton_laneadd_clicked();
+
+    void on_pushButton_lanedel_clicked();
+
+    void on_pushButton_lanechange_clicked();
+
 private:
     Ui::DialogAddRoadFromCDA *ui;
     OpenDrive * mpxodr;