119 QFile inputFile(fileName);
120 if (inputFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
121 QTextStream in(&inputFile);
122 while (!in.atEnd()) {
123 QString line = in.readLine();
124 QStringList list = line.split(QRegularExpression(
"\\s+"));
126 if (list[0].contains(
"#") || list.size() != 11) {
131 one.
time = list[1].toFloat() / 1000.0f;
132 one.
rd[
X] = list[3].toFloat() / 1000.0f;
133 one.
rd[
Y] = list[4].toFloat() / 1000.0f;
134 one.
rd[
Z] = list[5].toFloat() / 1000.0f;
135 one.
Q[
X] = list[7].toFloat() / 1e9f;
136 one.
Q[
Y] = list[8].toFloat() / 1e9f;
137 one.
Q[
Z] = list[9].toFloat() / 1e9f;
138 one.
good = list[10].toFloat() / 100.0f;
144 qInfo(
"Read %d dipoles in dip format from %s\n", set.
size(), fileName.toUtf8().data());
146 qCritical(
"Not able to read from: %s\n", fileName.toUtf8().data());
165 if (fileName.isEmpty() || this->size() == 0)
168 if (!out.open(QIODevice::WriteOnly)) {
169 qInfo(
"%s", fileName.toUtf8().constData());
173 for (k = 0, nsave = 0; k < this->
size(); k++) {
174 one = m_qListDips[k];
178 for (p = 0; p < 3; p++) {
186 if (out.write(
reinterpret_cast<const char*
>(&one_out),
sizeof(
bdipEcdRec)) !=
sizeof(
bdipEcdRec)) {
187 qCritical(
"Failed to write a dipole");
189 QFile::remove(fileName);
196 qInfo(
"%s", fileName.toUtf8().constData());
200 qInfo(
"Save %d dipoles in bdip format to %s\n", nsave, fileName.toUtf8().data());
212 if (fileName.isEmpty() || this->size() == 0)
214 if (!out.open(QIODevice::WriteOnly | QIODevice::Text)) {
215 qInfo(
"%s", fileName.toUtf8().constData());
222 QTextStream stream(&out);
223 stream <<
"# CoordinateSystem \"Head\"\n";
224 stream << QString::asprintf(
"# %7s %7s %8s %8s %8s %8s %8s %8s %8s %6s\n",
225 "begin",
"end",
"X (mm)",
"Y (mm)",
"Z (mm)",
"Q(nAm)",
"Qx(nAm)",
"Qy(nAm)",
"Qz(nAm)",
"g/%");
226 for (k = 0, nsave = 0; k < this->
size(); k++) {
227 one = this->m_qListDips[k];
229 stream << QString::asprintf(
" %7.1f %7.1f %8.2f %8.2f %8.2f %8.3f %8.3f %8.3f %8.3f %6.1f\n",
231 1000 * one.
rd[
X], 1000 * one.
rd[
Y], 1000 * one.
rd[
Z],
232 1e9 * one.
Q.norm(), 1e9 * one.
Q[
X], 1e9 * one.
Q[
Y], 1e9 * one.
Q[
Z], 100.0 * one.
good);
236 stream << QString::asprintf(
"## Name \"%s dipoles\" Style \"Dipoles\"\n",
"ALL");
239 qInfo(
"%s", fileName.toUtf8().constData());
243 qInfo(
"Save %d dipoles in dip format to %s\n", nsave, fileName.toUtf8().data());