202 lines
7.5 KiB
Python
202 lines
7.5 KiB
Python
|
# 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()
|