AutoFTG-Scripts_Metashape-Pro/AutoFTG/autoftg_batch_setpointc.py

202 lines
7.5 KiB
Python
Raw Permalink Normal View History

2023-08-04 19:35:27 +02:00
# AutoFTG - Scripts for Agisoft Metashape Pro
#
# Dialog: Batch Chunk Creator - Point Cloud Settings
# ----------------------------------------------------------------
from configparser import ConfigParser
from datetime import datetime
from os import path
import Metashape
from PySide2 import QtCore, QtGui, QtWidgets
from PySide2.QtCore import *
from PySide2.QtGui import *
from PySide2.QtWidgets import *
import AutoFTG.autoftg_batch as autoftg_batch
import AutoFTG.autoftg_main as autoftg_main
from AutoFTG.autoftg_batch import *
from AutoFTG.qtresources_rc2 import *
class Ui_DialogPCloudSet(QtWidgets.QDialog):
def __init__(self, parent):
QtWidgets.QDialog.__init__(self, parent)
self.setObjectName(u"DialogPointCloud")
self.resize(320, 240)
self.setWindowTitle(u"Point Cloud Settings")
icon = QIcon()
icon.addFile(u":/icons/icons8-live-photos-96.png", QSize(), QIcon.Normal, QIcon.Off)
self.gridLayoutWidget = QWidget(self)
self.gridLayoutWidget.setObjectName(u"gridLayoutWidget")
self.gridLayoutWidget.setGeometry(QRect(0, 0, 321, 243))
self.gridLayout = QGridLayout(self.gridLayoutWidget)
self.gridLayout.setSpacing(5)
self.gridLayout.setContentsMargins(10, 10, 10, 10)
self.gridLayout.setObjectName(u"gridLayout")
self.gridLayout.setHorizontalSpacing(10)
self.gridLayout.setContentsMargins(10, 10, 10, 10)
self.checkBox_2 = QCheckBox(self.gridLayoutWidget)
self.checkBox_2.setObjectName(u"checkBox_2")
self.checkBox_2.setLayoutDirection(Qt.RightToLeft)
self.checkBox_2.setText(u"Calculate Confidence")
self.gridLayout.addWidget(self.checkBox_2, 3, 0, 1, 1)
self.line = QFrame(self.gridLayoutWidget)
self.line.setObjectName(u"line")
self.line.setFrameShape(QFrame.HLine)
self.line.setFrameShadow(QFrame.Sunken)
self.gridLayout.addWidget(self.line, 1, 0, 1, 2)
self.label_3 = QLabel(self.gridLayoutWidget)
self.label_3.setObjectName(u"label_3")
self.label_3.setText(u"Regular")
self.gridLayout.addWidget(self.label_3, 4, 1, 1, 1)
self.lineEdit = QLineEdit(self.gridLayoutWidget)
self.lineEdit.setObjectName(u"lineEdit")
self.lineEdit.setPlaceholderText(u"0.05")
self.lineEdit.setClearButtonEnabled(True)
self.gridLayout.addWidget(self.lineEdit, 5, 1, 1, 1)
self.checkBox_3 = QCheckBox(self.gridLayoutWidget)
self.checkBox_3.setObjectName(u"checkBox_3")
self.checkBox_3.setLayoutDirection(Qt.RightToLeft)
self.checkBox_3.setText(u"Point Sampling")
self.gridLayout.addWidget(self.checkBox_3, 4, 0, 1, 1)
self.label = QLabel(self.gridLayoutWidget)
self.label.setObjectName(u"label")
self.label.setText(u"Enabled")
self.gridLayout.addWidget(self.label, 2, 1, 1, 1)
self.label_4 = QLabel(self.gridLayoutWidget)
self.label_4.setObjectName(u"label_4")
self.label_4.setText(u"Point spacing (m)")
self.label_4.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter)
self.gridLayout.addWidget(self.label_4, 5, 0, 1, 1)
self.label_2 = QLabel(self.gridLayoutWidget)
self.label_2.setObjectName(u"label_2")
self.label_2.setText(u"Disabled")
self.gridLayout.addWidget(self.label_2, 3, 1, 1, 1)
self.verticalSpacer = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)
self.gridLayout.addItem(self.verticalSpacer, 6, 1, 1, 1)
self.checkBox = QCheckBox(self.gridLayoutWidget)
self.checkBox.setObjectName(u"checkBox")
self.checkBox.setLayoutDirection(Qt.RightToLeft)
self.checkBox.setText(u"Calculate Colors")
self.checkBox.setChecked(True)
self.gridLayout.addWidget(self.checkBox, 2, 0, 1, 1)
self.label_5 = QLabel(self.gridLayoutWidget)
self.label_5.setObjectName(u"label_5")
font = QFont()
font.setFamily(u"Segoe UI")
font.setPointSize(14)
self.label_5.setFont(font)
self.label_5.setText(u"Point Cloud Settings")
self.gridLayout.addWidget(self.label_5, 0, 0, 1, 2)
self.horizontalLayout = QHBoxLayout()
self.horizontalLayout.setSpacing(5)
self.horizontalLayout.setObjectName(u"horizontalLayout")
self.pushButton = QPushButton(self.gridLayoutWidget)
self.pushButton.setObjectName(u"pushButton")
sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.pushButton.sizePolicy().hasHeightForWidth())
self.pushButton.setSizePolicy(sizePolicy)
self.pushButton.setText(u"Cancel")
icon1 = QIcon()
icon1.addFile(u":/icons/icons8-close-window-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.pushButton.setIcon(icon1)
self.pushButton.setIconSize(QSize(20, 20))
self.horizontalLayout.addWidget(self.pushButton)
self.pushButton_2 = QPushButton(self.gridLayoutWidget)
self.pushButton_2.setObjectName(u"pushButton_2")
sizePolicy.setHeightForWidth(self.pushButton_2.sizePolicy().hasHeightForWidth())
self.pushButton_2.setSizePolicy(sizePolicy)
self.pushButton_2.setText(u"Save")
icon2 = QIcon()
icon2.addFile(u":/icons/icons8-save-as-50.png", QSize(), QIcon.Normal, QIcon.Off)
self.pushButton_2.setIcon(icon2)
self.pushButton_2.setIconSize(QSize(20, 20))
self.horizontalLayout.addWidget(self.pushButton_2)
self.gridLayout.addLayout(self.horizontalLayout, 7, 0, 1, 2)
self.label_4.setBuddy(self.lineEdit)
QWidget.setTabOrder(self.checkBox, self.checkBox_2)
QWidget.setTabOrder(self.checkBox_2, self.checkBox_3)
QWidget.setTabOrder(self.checkBox_3, self.lineEdit)
QWidget.setTabOrder(self.lineEdit, self.pushButton_2)
QWidget.setTabOrder(self.pushButton_2, self.pushButton)
self.pushButton_2.clicked.connect(self.saveSetPCloud)
self.pushButton.clicked.connect(self.reject)
self.checkBox_3.toggled.connect(self.actionSetPointSampling.setVisible)
self.setWindowTitle(u"Dialog")
self.currentChkDef = autoftg_batch.chunkSet
self.loadSetPCloud()
self.exec_()
def loadSetPCloud(self):
self.pointcloud_source_data = autoftg_main.menuCfg.get(self.currentChkDef, "pointcloud_source_data")
if self.pointcloud_source_data == "DepthMaps":
self.source_data = Metashape.DataSource.DepthMapsData
elif self.pointcloud_source_data == "Mesh":
self.source_data = Metashape.DataSource.ModelData
else:
self.source_data = Metashape.DataSource.DepthMapsData
pointcloud_point_colors = autoftg_main.menuCfg.getboolean(self.currentChkDef, "pointcloud_point_colors")
self.checkBox.setChecked(pointcloud_point_colors)
pointcloud_point_confidence = autoftg_main.menuCfg.getboolean(self.currentChkDef, "pointcloud_point_confidence")
self.checkBox_2.setChecked(pointcloud_point_confidence)
pointcloud_uniform_sam = autoftg_main.menuCfg.getboolean(self.currentChkDef, "pointcloud_uniform_sampling")
self.checkBox_3.setChecked(pointcloud_uniform_sam)
pointcloud_points_spacing = autoftg_main.menuCfg.get(self.currentChkDef, "pointcloud_points_spacing")
self.lineEdit.setText(str(pointcloud_points_spacing))
print("Point Cloud settings loaded...")
def saveSetPCloud(self):
autoftg_main.menuCfg.set(self.currentChkDef, "pointcloud_source_data", str(self.pointcloud_source_data))
autoftg_main.menuCfg.set(self.currentChkDef, "pointcloud_point_colors", str(self.checkBox.isChecked))
autoftg_main.menuCfg.set(self.currentChkDef, "pointcloud_point_confidence", str(self.checkBox_2.isChecked))
autoftg_main.menuCfg.set(self.currentChkDef, "pointcloud_uniform_sampling", str(self.checkBox_3.isChecked))
autoftg_main.menuCfg.set(self.currentChkDef, "pointcloud_points_spacing", str(self.lineEdit.text))
with open(autoftg_main.menuCfgFilePath, 'w') as configfile:
autoftg_main.menuCfg.write(configfile)
print("Point Cloud settings saved...")
self.accept()