#include "BaseUiTool.h" #include #include #include #include #include #include #include #include QString TopAbs_ShapeEnum2QString(TopAbs_ShapeEnum v) { switch (v) { case TopAbs_COMPOUND: return QString("TopAbs_COMPOUND"); break; case TopAbs_COMPSOLID: return QString("TopAbs_COMPSOLID"); break; case TopAbs_SOLID: return QString("TopAbs_SOLID"); break; case TopAbs_SHELL: return QString("TopAbs_SHELL"); break; case TopAbs_FACE: return QString("TopAbs_FACE"); break; case TopAbs_WIRE: return QString("TopAbs_WIRE"); break; case TopAbs_EDGE: return QString("TopAbs_EDGE"); break; case TopAbs_VERTEX: return QString("TopAbs_VERTEX"); break; case TopAbs_SHAPE: return QString("TopAbs_SHAPE"); break; default: return QString(""); break; } } int findStdVectordouble(const std::vector& sortedVector, double target, double precision) { int low = 0; int high = sortedVector.size() - 1; while (low <= high) { int mid = low + (high - low) / 2; double midValue = sortedVector[mid]; // Check if the difference between target and midValue is smaller than precision if (std::abs(target - midValue) <= precision) { return mid; // Found a match } // Decide whether to search in the left half or right half of the vector if (target < midValue) { high = mid - 1; // Target is in the left half } else { low = mid + 1; // Target is in the right half } } return -1; // Target not found } int messageLog(QString logtext, int value) { QMessageBox msgBox; QString messagestr = logtext; msgBox.setText(messagestr); msgBox.exec(); return -1; } QString writeUTF8StringFile(QString path,QString unicodeString) { QFile fileOut(path); if (!fileOut.open(QIODevice::WriteOnly | QIODevice::Text)) { return ""; } QTextStream streamFileOut(&fileOut); streamFileOut.setCodec("UTF-8"); streamFileOut << unicodeString; streamFileOut.flush(); fileOut.close(); return path; } bool isNumeric(const QString& str) { bool isNumber = false; str.toDouble(&isNumber); return isNumber; } std::complex QVariant2Complex(const QVariant& variant) { QVariantList list = variant.toList(); if (list.size() >= 2) { double real = list[0].toDouble(); double imag = list[1].toDouble(); return std::complex(real, imag); } else { // 默认返回值或错误处理 return std::complex(); } } QVariant Complex2QVariant(const std::complex& value) { QVariantList list; list << value.real() << value.imag(); return QVariant::fromValue(list); } QMap QStringVector2QMapIndex(std::vector& vlist) { QMap result; for (size_t i = 0; i < vlist.size(); i++) { result.insert(vlist[i], i); } return result; } int QAbstracmodel2CsvFile(QString filepath, const QAbstractItemModel* model) { qDebug() << u8"正在保存为 csv文件中"; QFile file(filepath); if (file.open(QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Text)) { QTextStream stream(&file); size_t columnCount = model->columnCount(); size_t rowCount = model->rowCount(); // 获取文件头 for (size_t column = 0; column < columnCount; ++column) { QString title = model->headerData(column, Qt::Horizontal, Qt::DisplayRole).toString(); stream << title; if (column < columnCount - 1) { stream << ","; } else {} } stream << "\n"; // for (size_t i = 0; i < rowCount; ++i) { for (size_t j = 0; j < columnCount; j++) { QString title = model->index(i, j).data().toString(); stream << title; if (j < columnCount - 1) { stream << ","; } else {} } stream << "\n"; } file.close(); } qDebug() << filepath; return 0; }