mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2026-07-31 00:24:13 +02:00
7cc5790f7c
Port of the edz2qet.py prototype's mapping to C++. EdzPart parses an EPLAN part.xml into a portable model (identity/metadata, localized names, connection list); EdzElementBuilder turns that into a QET element (generic symbol: body rectangle + one west-facing terminal per pin, per-pin labels, localized <name>s, and elementInformations for the BOM). Pins are natural-sorted by designation so they stack 1,2,3,4 regardless of the order EPLAN lists them (MFH200 lists 1,3,4,2). Output verified structurally identical (uuids aside) to the Python oracle for three ifm samples — KG6000 (4-pin), MFH200 (4-pin, reordered) and R1D200 (5-pin, incl. Dutch name) — and the generated element loads in the QET editor with correct UTF-8. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
69 lines
2.4 KiB
C++
69 lines
2.4 KiB
C++
/*
|
|
Copyright 2006 The QElectroTech Team
|
|
This file is part of QElectroTech.
|
|
|
|
QElectroTech is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 2 of the License, or
|
|
(at your option) any later version.
|
|
|
|
QElectroTech is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
#ifndef EDZPART_H
|
|
#define EDZPART_H
|
|
|
|
#include <QString>
|
|
#include <QList>
|
|
#include <QMap>
|
|
|
|
/** One physical connection of an EPLAN part (a pin/terminal). */
|
|
struct EdzPin {
|
|
QString designation; ///< terminal id, e.g. "1", "PE"
|
|
QString description; ///< function label, e.g. "L+"
|
|
};
|
|
|
|
/**
|
|
@brief The portable data of an EPLAN part, read from its part.xml.
|
|
|
|
Mirrors the fields the standalone edz2qet.py prototype maps: identity and
|
|
metadata, localized names (2-letter language -> text) and the connection
|
|
list. Geometry from the EPLAN macro is intentionally ignored — the importer
|
|
generates a generic symbol from the pin list instead.
|
|
*/
|
|
class EdzPart
|
|
{
|
|
public:
|
|
bool parse(const QString &part_xml_path);
|
|
QString errorString() const { return m_error; }
|
|
|
|
QString partNumber() const { return m_part_number; }
|
|
QString manufacturer() const { return m_manufacturer; }
|
|
QString orderNumber() const { return m_order_number; }
|
|
QString typeNumber() const { return m_type_number; }
|
|
QString description() const { return m_description; }
|
|
QString comment() const { return m_comment; }
|
|
QString picture() const { return m_picture; }
|
|
QMap<QString, QString> names() const { return m_names; }
|
|
QList<EdzPin> pins() const { return m_pins; }
|
|
|
|
private:
|
|
QString m_error;
|
|
QString m_part_number;
|
|
QString m_manufacturer;
|
|
QString m_order_number;
|
|
QString m_type_number;
|
|
QString m_description; ///< DESCR1, preferred English (for element-info)
|
|
QString m_comment; ///< DESCR2, preferred English
|
|
QString m_picture; ///< picture file name, if any
|
|
QMap<QString, QString> m_names; ///< 2-letter lang -> localized name
|
|
QList<EdzPin> m_pins;
|
|
};
|
|
|
|
#endif // EDZPART_H
|