diff --git a/src/App/ExpressionParser.l b/src/App/ExpressionParser.l index 94b6667076..89337cb18c 100644 --- a/src/App/ExpressionParser.l +++ b/src/App/ExpressionParser.l @@ -164,10 +164,11 @@ EXPO [eE][-+]?[0-9]+ "mm" COUNTCHARS; yylval.quantity.scaler = Quantity::MilliMetre; yylval.quantity.unitStr = yytext; return UNIT; // milli meter (internal standard length) "cm" COUNTCHARS; yylval.quantity.scaler = Quantity::CentiMetre; yylval.quantity.unitStr = yytext; return UNIT; // centi meter "dm" COUNTCHARS; yylval.quantity.scaler = Quantity::DeciMetre; yylval.quantity.unitStr = yytext; return UNIT; // deci meter -"m" COUNTCHARS; yylval.quantity.scaler = Quantity::Metre; yylval.quantity.unitStr = yytext; return UNIT; // metre +"m" COUNTCHARS; yylval.quantity.scaler = Quantity::Metre; yylval.quantity.unitStr = yytext; return UNIT; // Metre "km" COUNTCHARS; yylval.quantity.scaler = Quantity::KiloMetre; yylval.quantity.unitStr = yytext; return UNIT; // kilo meter "l" COUNTCHARS; yylval.quantity.scaler = Quantity::Liter; yylval.quantity.unitStr = yytext; return UNIT; // Liter dm^3 +"ml" COUNTCHARS; yylval.quantity.scaler = Quantity::MilliLiter; yylval.quantity.unitStr = yytext; return UNIT; // milli Liter "ug" COUNTCHARS; yylval.quantity.scaler = Quantity::MicroGram; yylval.quantity.unitStr = yytext; return UNIT; // micro gram "\xC2\xB5g" COUNTCHARS; yylval.quantity.scaler = Quantity::MicroGram; yylval.quantity.unitStr = yytext; return UNIT; // micro gram @@ -183,14 +184,15 @@ EXPO [eE][-+]?[0-9]+ "A" COUNTCHARS; yylval.quantity.scaler = Quantity::Ampere; yylval.quantity.unitStr = yytext; return UNIT; // Ampere (internal standard electric current) "mA" COUNTCHARS; yylval.quantity.scaler = Quantity::MilliAmpere; yylval.quantity.unitStr = yytext; return UNIT; // milli Ampere "kA" COUNTCHARS; yylval.quantity.scaler = Quantity::KiloAmpere; yylval.quantity.unitStr = yytext; return UNIT; // kilo Ampere -"MA" COUNTCHARS; yylval.quantity.scaler = Quantity::MegaAmpere; yylval.quantity.unitStr = yytext; return UNIT; // Mega Ampere +"MA" COUNTCHARS; yylval.quantity.scaler = Quantity::MegaAmpere; yylval.quantity.unitStr = yytext; return UNIT; // mega Ampere "K" COUNTCHARS; yylval.quantity.scaler = Quantity::Kelvin; yylval.quantity.unitStr = yytext; return UNIT; // Kelvin (internal standard thermodynamic temperature) -"mK" COUNTCHARS; yylval.quantity.scaler = Quantity::MilliKelvin; yylval.quantity.unitStr = yytext; return UNIT; // Kelvin -"\xC2\xB5K" COUNTCHARS; yylval.quantity.scaler = Quantity::MicroKelvin; yylval.quantity.unitStr = yytext; return UNIT; // Kelvin -"uK" COUNTCHARS; yylval.quantity.scaler = Quantity::MicroKelvin; yylval.quantity.unitStr = yytext; return UNIT; // Kelvin +"mK" COUNTCHARS; yylval.quantity.scaler = Quantity::MilliKelvin; yylval.quantity.unitStr = yytext; return UNIT; // milli Kelvin +"\xC2\xB5K" COUNTCHARS; yylval.quantity.scaler = Quantity::MicroKelvin; yylval.quantity.unitStr = yytext; return UNIT; // micro Kelvin +"uK" COUNTCHARS; yylval.quantity.scaler = Quantity::MicroKelvin; yylval.quantity.unitStr = yytext; return UNIT; // micro Kelvin "mol" COUNTCHARS; yylval.quantity.scaler = Quantity::Mole; yylval.quantity.unitStr = yytext; return UNIT; // Mole (internal standard amount of substance) +"mmol" COUNTCHARS; yylval.quantity.scaler = Quantity::MilliMole; yylval.quantity.unitStr = yytext; return UNIT; // milli Mole "cd" COUNTCHARS; yylval.quantity.scaler = Quantity::Candela; yylval.quantity.unitStr = yytext; return UNIT; // Candela (internal standard luminous intensity) @@ -203,8 +205,6 @@ EXPO [eE][-+]?[0-9]+ "yd" COUNTCHARS; yylval.quantity.scaler = Quantity::Yard; yylval.quantity.unitStr = yytext; return UNIT; // yard "mi" COUNTCHARS; yylval.quantity.scaler = Quantity::Mile; yylval.quantity.unitStr = yytext; return UNIT; // mile - - "lb" COUNTCHARS; yylval.quantity.scaler = Quantity::Pound; yylval.quantity.unitStr = yytext; return UNIT; // pound "lbm" COUNTCHARS; yylval.quantity.scaler = Quantity::Pound; yylval.quantity.unitStr = yytext; return UNIT; // pound "oz" COUNTCHARS; yylval.quantity.scaler = Quantity::Ounce; yylval.quantity.unitStr = yytext; return UNIT; // ounce @@ -214,14 +214,17 @@ EXPO [eE][-+]?[0-9]+ "lbf" COUNTCHARS; yylval.quantity.scaler = Quantity::PoundForce; yylval.quantity.unitStr = yytext; return UNIT; // pound "N" COUNTCHARS; yylval.quantity.scaler = Quantity::Newton; yylval.quantity.unitStr = yytext; return UNIT; // Newton (kg*m/s^2)a-za-za-z -"kN" COUNTCHARS; yylval.quantity.scaler = Quantity::KiloNewton; yylval.quantity.unitStr = yytext; return UNIT; // Newton -"MN" COUNTCHARS; yylval.quantity.scaler = Quantity::MegaNewton; yylval.quantity.unitStr = yytext; return UNIT; // Newton -"mN" COUNTCHARS; yylval.quantity.scaler = Quantity::MilliNewton; yylval.quantity.unitStr = yytext; return UNIT; // Newton +"mN" COUNTCHARS; yylval.quantity.scaler = Quantity::MilliNewton; yylval.quantity.unitStr = yytext; return UNIT; // milli Newton +"kN" COUNTCHARS; yylval.quantity.scaler = Quantity::KiloNewton; yylval.quantity.unitStr = yytext; return UNIT; // kilo Newton +"MN" COUNTCHARS; yylval.quantity.scaler = Quantity::MegaNewton; yylval.quantity.unitStr = yytext; return UNIT; // mega Newton "Pa" COUNTCHARS; yylval.quantity.scaler = Quantity::Pascal; yylval.quantity.unitStr = yytext; return UNIT; // Pascal (kg/m*s^2 or N/m^2) -"kPa" COUNTCHARS; yylval.quantity.scaler = Quantity::KiloPascal; yylval.quantity.unitStr = yytext; return UNIT; // Pascal -"MPa" COUNTCHARS; yylval.quantity.scaler = Quantity::MegaPascal; yylval.quantity.unitStr = yytext; return UNIT; // Pascal -"GPa" COUNTCHARS; yylval.quantity.scaler = Quantity::GigaPascal; yylval.quantity.unitStr = yytext; return UNIT; // Pascal +"kPa" COUNTCHARS; yylval.quantity.scaler = Quantity::KiloPascal; yylval.quantity.unitStr = yytext; return UNIT; // kilo Pascal +"MPa" COUNTCHARS; yylval.quantity.scaler = Quantity::MegaPascal; yylval.quantity.unitStr = yytext; return UNIT; // mega Pascal +"GPa" COUNTCHARS; yylval.quantity.scaler = Quantity::GigaPascal; yylval.quantity.unitStr = yytext; return UNIT; // giga Pascal + +"bar" COUNTCHARS; yylval.quantity.scaler = Quantity::Bar; yylval.quantity.unitStr = yytext; return UNIT; // Bar +"mbar" COUNTCHARS; yylval.quantity.scaler = Quantity::MilliBar; yylval.quantity.unitStr = yytext; return UNIT; // milli Bar "Torr" COUNTCHARS; yylval.quantity.scaler = Quantity::Torr; yylval.quantity.unitStr = yytext; return UNIT; // portion of Pascal ( 101325/760 ) "mTorr" COUNTCHARS; yylval.quantity.scaler = Quantity::mTorr; yylval.quantity.unitStr = yytext; return UNIT; // @@ -232,13 +235,40 @@ EXPO [eE][-+]?[0-9]+ "ksi" COUNTCHARS; yylval.quantity.scaler = Quantity::KSI; yylval.quantity.unitStr = yytext; return UNIT; // 1000 x pounds/in^2 "W" COUNTCHARS; yylval.quantity.scaler = Quantity::Watt; yylval.quantity.unitStr = yytext; return UNIT; // Watt (kg*m^2/s^3) +"mW" COUNTCHARS; yylval.quantity.scaler = Quantity::MilliWatt; yylval.quantity.unitStr = yytext; return UNIT; // milli Watt +"kW" COUNTCHARS; yylval.quantity.scaler = Quantity::KiloWatt; yylval.quantity.unitStr = yytext; return UNIT; // kilo Watt "VA" COUNTCHARS; yylval.quantity.scaler = Quantity::VoltAmpere; yylval.quantity.unitStr = yytext; return UNIT; // VoltAmpere (kg*m^2/s^3) +"V" COUNTCHARS; yylval.quantity.scaler = Quantity::Volt; yylval.quantity.unitStr = yytext; return UNIT; // Volt (kg*m^2/A/s^3) +"kV" COUNTCHARS; yylval.quantity.scaler = Quantity::KiloVolt; yylval.quantity.unitStr = yytext; return UNIT; // kilo Volt +"mV" COUNTCHARS; yylval.quantity.scaler = Quantity::MilliVolt; yylval.quantity.unitStr = yytext; return UNIT; // milli Volt + +"C" COUNTCHARS; yylval.quantity.scaler = Quantity::Coulomb; yylval.quantity.unitStr = yytext; return UNIT; // Coulomb (A*s) + +"T" COUNTCHARS; yylval.quantity.scaler = Quantity::Tesla; yylval.quantity.unitStr = yytext; return UNIT; // Tesla (kg/s^2/A) + +"F" COUNTCHARS; yylval.quantity.scaler = Quantity::Farad; yylval.quantity.unitStr = yytext; return UNIT; // Farad (s^4*A^2/m^2/kg) +"mF" COUNTCHARS; yylval.quantity.scaler = Quantity::MilliFarad; yylval.quantity.unitStr = yytext; return UNIT; // milli Farad +"\xC2\xB5F" COUNTCHARS; yylval.quantity.scaler = Quantity::MicroFarad; yylval.quantity.unitStr = yytext; return UNIT; // micro Farad +"uF" COUNTCHARS; yylval.quantity.scaler = Quantity::MicroFarad; yylval.quantity.unitStr = yytext; return UNIT; // micro Farad +"nF" COUNTCHARS; yylval.quantity.scaler = Quantity::NanoFarad; yylval.quantity.unitStr = yytext; return UNIT; // nano Farad +"pF" COUNTCHARS; yylval.quantity.scaler = Quantity::PicoFarad; yylval.quantity.unitStr = yytext; return UNIT; // pico Farad + +"H" COUNTCHARS; yylval.quantity.scaler = Quantity::Henry; yylval.quantity.unitStr = yytext; return UNIT; // Henry (kg*m^2/s^2/A^2) +"mH" COUNTCHARS; yylval.quantity.scaler = Quantity::MilliHenry; yylval.quantity.unitStr = yytext; return UNIT; // milli Henry +"\xC2\xB5H" COUNTCHARS; yylval.quantity.scaler = Quantity::MicroHenry; yylval.quantity.unitStr = yytext; return UNIT; // micro Henry +"uH" COUNTCHARS; yylval.quantity.scaler = Quantity::MicroHenry; yylval.quantity.unitStr = yytext; return UNIT; // micro Henry) +"nH" COUNTCHARS; yylval.quantity.scaler = Quantity::NanoHenry; yylval.quantity.unitStr = yytext; return UNIT; // nano Henry + "J" COUNTCHARS; yylval.quantity.scaler = Quantity::Joule; yylval.quantity.unitStr = yytext; return UNIT; // Joule (kg*m^2/s^2) +"mJ" COUNTCHARS; yylval.quantity.scaler = Quantity::MilliJoule; yylval.quantity.unitStr = yytext; return UNIT; // milli Joule +"kJ" COUNTCHARS; yylval.quantity.scaler = Quantity::KiloJoule; yylval.quantity.unitStr = yytext; return UNIT; // kilo Joule "Nm" COUNTCHARS; yylval.quantity.scaler = Quantity::NewtonMeter; yylval.quantity.unitStr = yytext; return UNIT; // N*m = Joule "VAs" COUNTCHARS; yylval.quantity.scaler = Quantity::VoltAmpereSecond; yylval.quantity.unitStr = yytext; return UNIT; // V*A*s = Joule "CV" COUNTCHARS; yylval.quantity.scaler = Quantity::WattSecond; yylval.quantity.unitStr = yytext; return UNIT; // "Ws" COUNTCHARS; yylval.quantity.scaler = Quantity::WattSecond; yylval.quantity.unitStr = yytext; return UNIT; // W*s = Joule +"kWh" COUNTCHARS; yylval.quantity.scaler = Quantity::KiloWattHour; yylval.quantity.unitStr = yytext; return UNIT; // 1 kWh = 3.6e6 J +"eV" COUNTCHARS; yylval.quantity.scaler = Quantity::ElectronVolt; yylval.quantity.unitStr = yytext; return UNIT; // 1 eV = 1.602176634e-19 J "\xC2\xB0" COUNTCHARS; yylval.quantity.scaler = Quantity::Degree; yylval.quantity.unitStr = yytext; return UNIT; // degree (internal standard angle) "deg" COUNTCHARS; yylval.quantity.scaler = Quantity::Degree; yylval.quantity.unitStr = yytext; return UNIT; // degree (internal standard angle) diff --git a/src/App/FreeCADInit.py b/src/App/FreeCADInit.py index 93173ef67b..8880b61f91 100644 --- a/src/App/FreeCADInit.py +++ b/src/App/FreeCADInit.py @@ -638,6 +638,7 @@ App.Units.DeciMetre = App.Units.Quantity('dm') App.Units.Metre = App.Units.Quantity('m') App.Units.KiloMetre = App.Units.Quantity('km') +App.Units.MilliLiter = App.Units.Quantity('ml') App.Units.Liter = App.Units.Quantity('l') App.Units.MicroGram = App.Units.Quantity('ug') @@ -659,6 +660,7 @@ App.Units.Kelvin = App.Units.Quantity('K') App.Units.MilliKelvin = App.Units.Quantity('mK') App.Units.MicroKelvin = App.Units.Quantity('uK') +App.Units.MilliMole = App.Units.Quantity('mmol') App.Units.Mole = App.Units.Quantity('mol') App.Units.Candela = App.Units.Quantity('cd') @@ -675,15 +677,18 @@ App.Units.Stone = App.Units.Quantity('st') App.Units.Hundredweights= App.Units.Quantity('cwt') App.Units.Newton = App.Units.Quantity('N') +App.Units.MilliNewton = App.Units.Quantity('mN') App.Units.KiloNewton = App.Units.Quantity('kN') App.Units.MegaNewton = App.Units.Quantity('MN') -App.Units.MilliNewton = App.Units.Quantity('mN') App.Units.Pascal = App.Units.Quantity('Pa') App.Units.KiloPascal = App.Units.Quantity('kPa') App.Units.MegaPascal = App.Units.Quantity('MPa') App.Units.GigaPascal = App.Units.Quantity('GPa') +App.Units.MilliBar = App.Units.Quantity('mbar') +App.Units.Bar = App.Units.Quantity('bar') + App.Units.PoundForce = App.Units.Quantity().PoundForce App.Units.Torr = App.Units.Quantity().Torr App.Units.mTorr = App.Units.Quantity().mTorr @@ -693,19 +698,41 @@ App.Units.PSI = App.Units.Quantity('psi') App.Units.KSI = App.Units.Quantity('ksi') App.Units.Watt = App.Units.Quantity('W') +App.Units.MilliWatt = App.Units.Quantity('mW') +App.Units.KiloWatt = App.Units.Quantity('kW') App.Units.VoltAmpere = App.Units.Quantity('VA') App.Units.Volt = App.Units.Quantity('V') +App.Units.MilliVolt = App.Units.Quantity('mV') +App.Units.KiloVolt = App.Units.Quantity('kV') + +App.Units.Coulomb = App.Units.Quantity('C') + +App.Units.Tesla = App.Units.Quantity('T') + +App.Units.PicoFarad = App.Units.Quantity('pF') +App.Units.NanoFarad = App.Units.Quantity('nF') +App.Units.MicroFarad = App.Units.Quantity('uF') +App.Units.MilliFarad = App.Units.Quantity('mF') +App.Units.Farad = App.Units.Quantity('F') + +App.Units.NanoHenry = App.Units.Quantity('nH') +App.Units.MicroHenry = App.Units.Quantity('uH') +App.Units.MilliHenry = App.Units.Quantity('mH') +App.Units.Henry = App.Units.Quantity('H') App.Units.Joule = App.Units.Quantity('J') +App.Units.MilliJoule = App.Units.Quantity('mJ') +App.Units.KiloJoule = App.Units.Quantity('kJ') App.Units.NewtonMeter = App.Units.Quantity('Nm') App.Units.VoltAmpereSecond = App.Units.Quantity('VAs') App.Units.WattSecond = App.Units.Quantity('Ws') +App.Units.KiloWattHour = App.Units.Quantity('kWh') +App.Units.ElectronVolt = App.Units.Quantity('eV') App.Units.MPH = App.Units.Quantity('mi/h') App.Units.KMH = App.Units.Quantity('km/h') - App.Units.Degree = App.Units.Quantity('deg') App.Units.Radian = App.Units.Quantity('rad') App.Units.Gon = App.Units.Quantity('gon') @@ -730,8 +757,12 @@ App.Units.Velocity = App.Units.Unit(1,0,-1) App.Units.Acceleration = App.Units.Unit(1,0,-2) App.Units.Temperature = App.Units.Unit(0,0,0,0,1) -App.Units.ElectricCurrent = App.Units.Unit(0,0,0,1) -App.Units.ElectricPotential = App.Units.Unit(2,1,-3,-1) +App.Units.ElectricCurrent = App.Units.Unit(0,0,0,1) +App.Units.ElectricPotential = App.Units.Unit(2,1,-3,-1) +App.Units.ElectricCharge = App.Units.Unit(0,0,1,1) +App.Units.MagneticFluxDensity = App.Units.Unit(0,1,-2,-1) +App.Units.ElectricalCapacitance = App.Units.Unit(-2,-1,4,2) +App.Units.ElectricalInductance = App.Units.Unit(2,1,-2,-2) App.Units.AmountOfSubstance = App.Units.Unit(0,0,0,0,0,1) App.Units.LuminousIntensity = App.Units.Unit(0,0,0,0,0,0,1) diff --git a/src/App/TextDocument.cpp b/src/App/TextDocument.cpp index 625d9ba040..63cd196882 100644 --- a/src/App/TextDocument.cpp +++ b/src/App/TextDocument.cpp @@ -40,15 +40,14 @@ TextDocument::TextDocument() ADD_PROPERTY_TYPE( Text, (""), 0, App::Prop_Hidden, "Content of the document."); - ADD_PROPERTY_TYPE( - ReadOnly, (false), 0, App::Prop_None, - "Defines whether the content can be edited."); } void TextDocument::onChanged(const Property* prop) { if (prop == &Text) textChanged(); + else if (prop == &Label) + labelChanged(); DocumentObject::onChanged(prop); } @@ -57,7 +56,12 @@ const char* TextDocument::getViewProviderName() const return "Gui::ViewProviderTextDocument"; } -boost::signals2::connection TextDocument::connect(const TextSlot &sub) +boost::signals2::connection TextDocument::connectText(const TextSlot &sub) { return textChanged.connect(sub); } + +boost::signals2::connection TextDocument::connectLabel(const TextSlot &sub) +{ + return labelChanged.connect(sub); +} diff --git a/src/App/TextDocument.h b/src/App/TextDocument.h index a90868338e..5f89ff3b48 100644 --- a/src/App/TextDocument.h +++ b/src/App/TextDocument.h @@ -42,7 +42,6 @@ public: using TextSlot = TextSignal::slot_type; PropertyString Text; - PropertyBool ReadOnly; TextDocument(); ~TextDocument() {} @@ -50,9 +49,12 @@ public: void onChanged(const Property* prop); const char* getViewProviderName() const; - boost::signals2::connection connect(const TextSlot &sub); + boost::signals2::connection connectText(const TextSlot &sub); + boost::signals2::connection connectLabel(const TextSlot &sub); + private: TextSignal textChanged; + TextSignal labelChanged; }; } diff --git a/src/Base/Quantity.cpp b/src/Base/Quantity.cpp index ff2c879e5f..1c2edaf971 100644 --- a/src/Base/Quantity.cpp +++ b/src/Base/Quantity.cpp @@ -246,7 +246,8 @@ Quantity Quantity::DeciMetre (100.0 ,Unit(1)); Quantity Quantity::Metre (1.0e3 ,Unit(1)); Quantity Quantity::KiloMetre (1.0e6 ,Unit(1)); -Quantity Quantity::Liter (1000000.0 ,Unit(3)); +Quantity Quantity::MilliLiter (1000.0 ,Unit(3)); +Quantity Quantity::Liter (1.0e6 ,Unit(3)); Quantity Quantity::Hertz (1.0 ,Unit(0,0,-1)); Quantity Quantity::KiloHertz (1.0e3 ,Unit(0,0,-1)); @@ -272,6 +273,7 @@ Quantity Quantity::Kelvin (1.0 ,Unit(0,0,0,0,1)); Quantity Quantity::MilliKelvin (0.001 ,Unit(0,0,0,0,1)); Quantity Quantity::MicroKelvin (0.000001 ,Unit(0,0,0,0,1)); +Quantity Quantity::MilliMole (0.001 ,Unit(0,0,0,0,0,1)); Quantity Quantity::Mole (1.0 ,Unit(0,0,0,0,0,1)); Quantity Quantity::Candela (1.0 ,Unit(0,0,0,0,0,0,1)); @@ -287,18 +289,21 @@ Quantity Quantity::Ounce (0.0283495231 ,Unit(0,1)); Quantity Quantity::Stone (6.35029318 ,Unit(0,1)); Quantity Quantity::Hundredweights (50.80234544 ,Unit(0,1)); -Quantity Quantity::PoundForce (224.81 ,Unit(1,1,-2)); // Newton are ~= 0.22481 lbF +Quantity Quantity::PoundForce (224.81 ,Unit(1,1,-2)); // Newton are ~= 0.22481 lbF -Quantity Quantity::Newton (1000.0 ,Unit(1,1,-2)); // Newton (kg*m/s^2) +Quantity Quantity::Newton (1000.0 ,Unit(1,1,-2)); // Newton (kg*m/s^2) +Quantity Quantity::MilliNewton (1.0 ,Unit(1,1,-2)); Quantity Quantity::KiloNewton (1e+6 ,Unit(1,1,-2)); Quantity Quantity::MegaNewton (1e+9 ,Unit(1,1,-2)); -Quantity Quantity::MilliNewton (1.0 ,Unit(1,1,-2)); Quantity Quantity::Pascal (0.001 ,Unit(-1,1,-2)); // Pascal (kg/m/s^2 or N/m^2) Quantity Quantity::KiloPascal (1.00 ,Unit(-1,1,-2)); Quantity Quantity::MegaPascal (1000.0 ,Unit(-1,1,-2)); Quantity Quantity::GigaPascal (1e+6 ,Unit(-1,1,-2)); +Quantity Quantity::MilliBar (0.1 ,Unit(-1,1,-2)); +Quantity Quantity::Bar (100.0 ,Unit(-1,1,-2)); // 1 bar = 100 kPa + Quantity Quantity::Torr (101.325/760.0 ,Unit(-1,1,-2)); // Torr is a defined fraction of Pascal (kg/m/s^2 or N/m^2) Quantity Quantity::mTorr (0.101325/760.0,Unit(-1,1,-2)); // Torr is a defined fraction of Pascal (kg/m/s^2 or N/m^2) Quantity Quantity::yTorr (0.000101325/760.0 ,Unit(-1,1,-2)); // Torr is a defined fraction of Pascal (kg/m/s^2 or N/m^2) @@ -306,15 +311,38 @@ Quantity Quantity::yTorr (0.000101325/760.0 ,Unit(-1,1,-2)); // Torr Quantity Quantity::PSI (6.894744825494,Unit(-1,1,-2)); // pounds/in^2 Quantity Quantity::KSI (6894.744825494,Unit(-1,1,-2)); // 1000 x pounds/in^2 -Quantity Quantity::Watt (1e+6 ,Unit(2,1,-3)); // Watt (kg*m^2/s^3) -Quantity Quantity::VoltAmpere (1e+6 ,Unit(2,1,-3)); // VoltAmpere (kg*m^2/s^3) +Quantity Quantity::Watt (1e+6 ,Unit(2,1,-3)); // Watt (kg*m^2/s^3) +Quantity Quantity::MilliWatt (1e+3 ,Unit(2,1,-3)); +Quantity Quantity::KiloWatt (1e+9 ,Unit(2,1,-3)); +Quantity Quantity::VoltAmpere (1e+6 ,Unit(2,1,-3)); // VoltAmpere (kg*m^2/s^3) -Quantity Quantity::Volt (1e+6 ,Unit(2,1,-3,-1)); // Volt (kg*m^2/A/s^3) +Quantity Quantity::Volt (1e+6 ,Unit(2,1,-3,-1)); // Volt (kg*m^2/A/s^3) +Quantity Quantity::MilliVolt (1e+3 ,Unit(2,1,-3,-1)); +Quantity Quantity::KiloVolt (1e+9 ,Unit(2,1,-3,-1)); -Quantity Quantity::Joule (1e+6 ,Unit(2,1,-2)); // Joule (kg*m^2/s^2) -Quantity Quantity::NewtonMeter (1e+6 ,Unit(2,1,-2)); // Joule (kg*m^2/s^2) -Quantity Quantity::VoltAmpereSecond (1e+6 ,Unit(2,1,-2)); // Joule (kg*m^2/s^2) -Quantity Quantity::WattSecond (1e+6 ,Unit(2,1,-2)); // Joule (kg*m^2/s^2) +Quantity Quantity::Coulomb (1.0 ,Unit(0,0,1,1)); // Coulomb (A*s) + +Quantity Quantity::Tesla (1.0 ,Unit(0,1,-2,-1)); // Tesla (kg/s^2/A) + +Quantity Quantity::PicoFarad (1e-18 ,Unit(-2,-1,4,2)); +Quantity Quantity::NanoFarad (1e-15 ,Unit(-2,-1,4,2)); +Quantity Quantity::MicroFarad (1e-12 ,Unit(-2,-1,4,2)); +Quantity Quantity::MilliFarad (1e-9 ,Unit(-2,-1,4,2)); +Quantity Quantity::Farad (1e-6 ,Unit(-2,-1,4,2)); // Farad (s^4*A^2/m^2/kg) + +Quantity Quantity::NanoHenry (1e-3 ,Unit(2,1,-2,-2)); +Quantity Quantity::MicroHenry (1.0 ,Unit(2,1,-2,-2)); +Quantity Quantity::MilliHenry (1e+3 ,Unit(2,1,-2,-2)); +Quantity Quantity::Henry (1e+6 ,Unit(2,1,-2,-2)); // Henry (kg*m^2/s^2/A^2) + +Quantity Quantity::Joule (1e+6 ,Unit(2,1,-2)); // Joule (kg*m^2/s^2) +Quantity Quantity::MilliJoule (1e+3 ,Unit(2,1,-2)); +Quantity Quantity::KiloJoule (1e+9 ,Unit(2,1,-2)); +Quantity Quantity::NewtonMeter (1e+6 ,Unit(2,1,-2)); // Joule (kg*m^2/s^2) +Quantity Quantity::VoltAmpereSecond (1e+6 ,Unit(2,1,-2)); // Joule (kg*m^2/s^2) +Quantity Quantity::WattSecond (1e+6 ,Unit(2,1,-2)); // Joule (kg*m^2/s^2) +Quantity Quantity::KiloWattHour (3.6e+12 ,Unit(2,1,-2)); // 1 kWh = 3.6e6 J +Quantity Quantity::ElectronVolt (1.602176634e-13 ,Unit(2,1,-2)); // 1 eV = 1.602176634e-19 J Quantity Quantity::KMH (277.778 ,Unit(1,0,-1)); // km/h Quantity Quantity::MPH (447.04 ,Unit(1,0,-1)); // Mile/h diff --git a/src/Base/Quantity.h b/src/Base/Quantity.h index 890359d3be..851142c802 100644 --- a/src/Base/Quantity.h +++ b/src/Base/Quantity.h @@ -187,6 +187,7 @@ public: static Quantity KiloMetre; static Quantity Liter; + static Quantity MilliLiter; static Quantity Hertz; static Quantity KiloHertz; @@ -212,6 +213,7 @@ public: static Quantity MilliKelvin; static Quantity MicroKelvin; + static Quantity MilliMole; static Quantity Mole; static Quantity Candela; @@ -230,15 +232,18 @@ public: static Quantity PoundForce; static Quantity Newton; + static Quantity MilliNewton; static Quantity KiloNewton; static Quantity MegaNewton; - static Quantity MilliNewton; static Quantity Pascal; static Quantity KiloPascal; static Quantity MegaPascal; static Quantity GigaPascal; + static Quantity Bar; + static Quantity MilliBar; + static Quantity Torr; static Quantity mTorr; static Quantity yTorr; @@ -247,14 +252,37 @@ public: static Quantity KSI; static Quantity Watt; + static Quantity MilliWatt; + static Quantity KiloWatt; static Quantity VoltAmpere; static Quantity Volt; + static Quantity MilliVolt; + static Quantity KiloVolt; + + static Quantity Coulomb; + + static Quantity Tesla; + + static Quantity Farad; + static Quantity MilliFarad; + static Quantity MicroFarad; + static Quantity NanoFarad; + static Quantity PicoFarad; + + static Quantity Henry; + static Quantity MilliHenry; + static Quantity MicroHenry; + static Quantity NanoHenry; static Quantity Joule; + static Quantity MilliJoule; + static Quantity KiloJoule; static Quantity NewtonMeter; static Quantity VoltAmpereSecond; static Quantity WattSecond; + static Quantity KiloWattHour; + static Quantity ElectronVolt; static Quantity KMH; static Quantity MPH; diff --git a/src/Base/QuantityLexer.c b/src/Base/QuantityLexer.c index ec0c82b083..9f6c4f8dd6 100644 --- a/src/Base/QuantityLexer.c +++ b/src/Base/QuantityLexer.c @@ -353,8 +353,8 @@ static void yynoreturn yy_fatal_error ( const char* msg ); (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 109 -#define YY_END_OF_BUFFER 110 +#define YY_NUM_RULES 134 +#define YY_END_OF_BUFFER 135 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -362,31 +362,33 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[202] = +static const flex_int16_t yy_accept[229] = { 0, - 0, 0, 0, 0, 110, 108, 4, 5, 42, 44, - 6, 108, 7, 108, 86, 85, 31, 108, 108, 108, - 72, 35, 81, 55, 108, 83, 108, 71, 69, 1, - 108, 108, 108, 91, 108, 25, 30, 108, 108, 17, - 15, 108, 108, 108, 108, 28, 27, 108, 108, 108, - 108, 3, 109, 2, 5, 89, 87, 88, 86, 86, - 0, 75, 0, 0, 18, 34, 0, 57, 0, 73, - 59, 0, 70, 76, 0, 0, 0, 0, 40, 13, - 0, 0, 0, 14, 0, 43, 0, 41, 33, 0, - 56, 0, 26, 16, 0, 49, 0, 32, 36, 58, + 0, 0, 0, 0, 135, 133, 4, 5, 44, 46, + 6, 133, 7, 133, 111, 110, 32, 80, 82, 133, + 88, 93, 36, 106, 57, 133, 108, 81, 77, 73, + 1, 133, 133, 133, 133, 116, 133, 26, 31, 133, + 133, 17, 15, 133, 133, 133, 133, 29, 28, 133, + 133, 133, 133, 3, 134, 2, 5, 114, 112, 113, + 111, 111, 0, 98, 0, 0, 19, 35, 0, 60, + 0, 96, 61, 0, 76, 99, 0, 0, 0, 0, + 0, 42, 13, 0, 0, 0, 14, 101, 0, 45, + 0, 43, 34, 0, 95, 59, 0, 78, 75, 27, - 0, 24, 48, 12, 0, 9, 51, 90, 0, 0, - 0, 0, 0, 52, 0, 0, 38, 0, 22, 10, - 47, 77, 0, 0, 0, 0, 0, 88, 0, 86, - 0, 0, 86, 21, 62, 20, 61, 0, 74, 98, - 0, 0, 0, 96, 53, 78, 97, 80, 19, 60, - 68, 54, 50, 100, 0, 46, 29, 99, 39, 102, - 67, 79, 103, 0, 105, 0, 0, 37, 0, 23, - 11, 82, 84, 8, 0, 89, 0, 87, 0, 88, - 0, 86, 63, 92, 93, 94, 0, 0, 104, 107, - 106, 45, 0, 0, 95, 101, 64, 65, 0, 66, + 16, 0, 51, 0, 33, 83, 89, 94, 37, 58, + 0, 79, 74, 0, 25, 50, 18, 12, 0, 86, + 92, 9, 53, 87, 115, 0, 0, 0, 0, 0, + 54, 0, 0, 85, 91, 39, 0, 23, 10, 49, + 102, 0, 0, 0, 0, 0, 113, 0, 111, 0, + 0, 111, 22, 64, 21, 63, 0, 97, 123, 0, + 0, 0, 65, 121, 55, 103, 122, 105, 20, 62, + 100, 72, 56, 52, 125, 0, 0, 48, 30, 0, + 124, 40, 127, 71, 104, 128, 0, 130, 0, 0, + 84, 90, 38, 0, 24, 11, 107, 109, 8, 0, - 0 + 114, 0, 112, 0, 113, 0, 111, 67, 117, 118, + 119, 0, 0, 66, 41, 129, 132, 131, 47, 0, + 0, 120, 126, 68, 69, 0, 70, 0 } ; static const YY_CHAR yy_ec[256] = @@ -397,31 +399,31 @@ static const YY_CHAR yy_ec[256] = 1, 2, 1, 4, 1, 1, 1, 1, 5, 6, 6, 6, 7, 8, 9, 10, 6, 11, 12, 13, 14, 14, 14, 14, 14, 14, 14, 1, 1, 1, - 6, 1, 1, 1, 15, 1, 16, 1, 17, 1, - 18, 19, 1, 20, 21, 1, 22, 23, 1, 24, - 1, 1, 25, 26, 1, 27, 28, 1, 1, 1, - 29, 1, 30, 6, 1, 1, 31, 32, 33, 34, + 6, 1, 1, 1, 15, 1, 16, 1, 17, 18, + 19, 20, 1, 21, 22, 1, 23, 24, 1, 25, + 1, 1, 26, 27, 1, 28, 29, 1, 1, 1, + 30, 1, 31, 6, 1, 1, 32, 33, 34, 35, - 35, 36, 37, 38, 39, 1, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 1, 51, 52, - 53, 54, 1, 1, 1, 1, 1, 55, 1, 1, - 1, 1, 1, 1, 1, 56, 1, 1, 1, 1, + 36, 37, 38, 39, 40, 1, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 1, 52, 53, + 54, 55, 1, 1, 1, 1, 1, 56, 1, 1, 1, 1, 1, 1, 1, 57, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 58, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 58, 1, 59, 60, 1, - 61, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 62, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 59, 1, 60, 61, 1, + 62, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 63, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 63, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 64, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static const YY_CHAR yy_meta[64] = +static const YY_CHAR yy_meta[65] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -429,112 +431,119 @@ static const YY_CHAR yy_meta[64] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1 + 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[203] = +static const flex_int16_t yy_base[230] = { 0, - 0, 0, 61, 62, 332, 333, 333, 328, 333, 333, - 333, 55, 333, 59, 66, 76, 333, 303, 75, 275, - 333, 333, 81, 286, 296, 333, 282, 310, 276, 333, - 49, 68, 71, 271, 273, 277, 333, 277, 99, 63, - 106, 277, 264, 76, 286, 89, 78, 116, 282, 72, - 70, 333, 333, 333, 312, 143, 150, 157, 169, 183, - 194, 333, 260, 282, 333, 333, 258, 333, 280, 333, - 333, 263, 261, 333, 260, 263, 267, 274, 333, 333, - 256, 254, 265, 333, 256, 333, 257, 333, 333, 245, - 333, 267, 333, 333, 258, 98, 220, 333, 333, 333, + 0, 0, 62, 63, 358, 359, 359, 354, 359, 359, + 359, 56, 359, 60, 67, 75, 359, 328, 359, 70, + 300, 359, 359, 76, 311, 321, 359, 307, 336, 301, + 359, 64, 317, 64, 69, 74, 298, 302, 359, 302, + 113, 73, 148, 97, 290, 86, 312, 82, 91, 160, + 308, 62, 63, 359, 359, 359, 339, 135, 147, 183, + 193, 201, 213, 359, 286, 308, 359, 359, 284, 359, + 306, 359, 359, 289, 287, 359, 286, 289, 293, 300, + 283, 359, 359, 281, 279, 290, 359, 359, 281, 359, + 235, 359, 359, 222, 359, 359, 244, 359, 235, 359, - 211, 333, 103, 333, 118, 333, 333, 333, 202, 213, - 209, 196, 181, 333, 183, 180, 333, 179, 333, 333, - 333, 333, 188, 106, 159, 208, 220, 224, 233, 237, - 249, 176, 199, 333, 333, 333, 333, 155, 333, 333, - 151, 155, 141, 333, 333, 333, 333, 333, 333, 333, - 333, 333, 333, 167, 130, 333, 333, 333, 333, 333, - 333, 333, 138, 126, 135, 122, 104, 333, 105, 333, - 333, 333, 333, 333, 253, 257, 262, 266, 270, 274, - 278, 282, 333, 333, 333, 126, 120, 70, 333, 333, - 333, 333, 61, 56, 333, 333, 333, 333, 38, 333, + 359, 233, 39, 226, 359, 359, 359, 359, 359, 359, + 215, 359, 359, 216, 359, 66, 359, 201, 101, 359, + 359, 359, 359, 359, 359, 193, 204, 200, 189, 183, + 359, 184, 178, 359, 359, 359, 176, 359, 359, 359, + 359, 212, 84, 159, 229, 240, 245, 254, 258, 271, + 275, 279, 359, 359, 359, 359, 168, 359, 359, 159, + 158, 157, 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 187, 144, 141, 359, 359, 143, + 359, 359, 359, 359, 359, 145, 129, 135, 122, 119, + 359, 359, 359, 120, 359, 359, 359, 359, 359, 284, - 333, 74 + 288, 292, 296, 300, 304, 308, 312, 359, 359, 359, + 144, 144, 106, 359, 359, 359, 359, 359, 359, 105, + 102, 359, 359, 359, 359, 91, 359, 359, 124 } ; -static const flex_int16_t yy_def[203] = +static const flex_int16_t yy_def[230] = { 0, - 201, 1, 202, 202, 201, 201, 201, 201, 201, 201, - 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, - 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, - 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, - 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, - 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, - 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, - 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, - 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, - 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, + 228, 1, 229, 229, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, - 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, - 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, - 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, - 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, - 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, - 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, - 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, - 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, - 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, - 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, - 0, 201 + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 0, 228 } ; -static const flex_int16_t yy_nxt[397] = +static const flex_int16_t yy_nxt[424] = { 0, 6, 7, 8, 9, 10, 11, 11, 12, 13, 14, 15, 16, 15, 15, 17, 18, 6, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 6, - 31, 6, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 6, 45, 46, 47, 48, - 6, 6, 49, 6, 6, 6, 6, 6, 6, 6, - 6, 50, 51, 53, 53, 56, 56, 56, 56, 57, - 57, 57, 57, 58, 52, 59, 60, 60, 60, 60, - 75, 76, 61, 58, 200, 59, 60, 60, 60, 60, - 54, 54, 61, 63, 96, 66, 77, 78, 64, 67, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 6, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 6, 47, 48, 49, + 50, 6, 6, 51, 6, 6, 6, 6, 6, 6, + 6, 6, 52, 53, 55, 55, 58, 58, 58, 58, + 59, 59, 59, 59, 60, 173, 61, 62, 62, 62, + 62, 174, 60, 63, 61, 62, 62, 62, 62, 65, + 68, 63, 56, 56, 66, 69, 77, 78, 82, 70, - 61, 79, 199, 68, 69, 83, 97, 198, 115, 80, - 61, 81, 84, 89, 108, 116, 197, 90, 82, 109, - 98, 91, 92, 110, 124, 125, 99, 112, 100, 122, - 196, 101, 123, 152, 113, 93, 117, 114, 195, 153, - 94, 118, 102, 156, 103, 157, 95, 104, 194, 105, - 193, 158, 119, 56, 56, 56, 56, 120, 159, 126, - 57, 57, 57, 57, 172, 173, 127, 128, 128, 128, - 128, 192, 191, 129, 190, 189, 188, 126, 187, 130, - 130, 130, 130, 186, 127, 131, 133, 133, 133, 133, - 58, 129, 59, 60, 60, 60, 60, 185, 184, 61, + 71, 88, 63, 124, 86, 103, 83, 178, 84, 179, + 63, 87, 79, 80, 120, 85, 121, 104, 143, 144, + 141, 129, 132, 142, 54, 125, 89, 93, 130, 133, + 126, 131, 94, 95, 127, 181, 96, 97, 227, 122, + 98, 99, 182, 197, 198, 58, 58, 58, 58, 226, + 100, 145, 225, 224, 223, 101, 222, 59, 59, 59, + 59, 102, 105, 146, 221, 106, 220, 107, 108, 109, + 145, 110, 219, 218, 111, 112, 113, 134, 217, 135, + 114, 136, 146, 216, 215, 115, 137, 116, 214, 117, + 118, 213, 119, 147, 147, 147, 147, 138, 212, 148, - 132, 183, 132, 131, 133, 133, 133, 133, 168, 133, - 133, 133, 133, 169, 175, 174, 175, 61, 176, 176, - 176, 176, 167, 166, 170, 165, 177, 164, 177, 171, - 178, 178, 178, 178, 128, 128, 128, 128, 163, 179, - 129, 179, 162, 180, 180, 180, 180, 130, 130, 130, - 130, 161, 160, 131, 155, 181, 154, 181, 129, 182, - 182, 182, 182, 176, 176, 176, 176, 176, 176, 176, - 176, 131, 178, 178, 178, 178, 178, 178, 178, 178, - 180, 180, 180, 180, 180, 180, 180, 180, 182, 182, - 182, 182, 182, 182, 182, 182, 151, 150, 149, 148, + 211, 210, 139, 149, 149, 149, 149, 209, 60, 150, + 61, 62, 62, 62, 62, 208, 199, 63, 148, 151, + 190, 151, 189, 152, 152, 152, 152, 188, 150, 191, + 187, 192, 186, 193, 185, 200, 63, 200, 194, 201, + 201, 201, 201, 184, 183, 180, 202, 177, 202, 195, + 203, 203, 203, 203, 196, 147, 147, 147, 147, 176, + 204, 148, 204, 175, 205, 205, 205, 205, 149, 149, + 149, 149, 172, 171, 150, 170, 169, 206, 168, 206, + 148, 207, 207, 207, 207, 152, 152, 152, 152, 152, + 152, 152, 152, 150, 201, 201, 201, 201, 201, 201, - 147, 146, 145, 144, 143, 142, 141, 140, 139, 138, - 137, 136, 135, 134, 55, 121, 111, 107, 106, 88, - 87, 86, 85, 74, 73, 72, 71, 70, 65, 62, - 55, 201, 5, 201, 201, 201, 201, 201, 201, 201, - 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, - 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, - 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, - 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, - 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, - 201, 201, 201, 201, 201, 201 + 201, 201, 203, 203, 203, 203, 203, 203, 203, 203, + 205, 205, 205, 205, 205, 205, 205, 205, 207, 207, + 207, 207, 207, 207, 207, 207, 167, 166, 165, 164, + 163, 162, 161, 160, 159, 158, 157, 156, 155, 154, + 153, 57, 140, 128, 123, 92, 91, 90, 81, 76, + 75, 74, 73, 72, 67, 64, 57, 228, 5, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228 } ; -static const flex_int16_t yy_chk[397] = +static const flex_int16_t yy_chk[424] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -542,44 +551,47 @@ static const flex_int16_t yy_chk[397] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 3, 4, 12, 12, 12, 12, 14, - 14, 14, 14, 15, 202, 15, 15, 15, 15, 15, - 31, 31, 15, 16, 199, 16, 16, 16, 16, 16, - 3, 4, 16, 19, 40, 23, 31, 31, 19, 23, + 1, 1, 1, 1, 3, 4, 12, 12, 12, 12, + 14, 14, 14, 14, 15, 103, 15, 15, 15, 15, + 15, 103, 16, 15, 16, 16, 16, 16, 16, 20, + 24, 16, 3, 4, 20, 24, 32, 32, 34, 24, - 15, 32, 194, 23, 23, 33, 40, 193, 47, 32, - 16, 32, 33, 39, 44, 47, 188, 39, 32, 44, - 41, 39, 39, 44, 51, 51, 41, 46, 41, 50, - 187, 41, 50, 96, 46, 39, 48, 46, 186, 96, - 39, 48, 41, 103, 41, 103, 39, 41, 169, 41, - 167, 105, 48, 56, 56, 56, 56, 48, 105, 56, - 57, 57, 57, 57, 124, 124, 57, 58, 58, 58, - 58, 166, 165, 58, 164, 163, 155, 56, 154, 59, - 59, 59, 59, 143, 57, 59, 132, 132, 132, 132, - 60, 58, 60, 60, 60, 60, 60, 142, 141, 60, + 24, 36, 15, 46, 35, 42, 34, 116, 34, 116, + 16, 35, 32, 32, 44, 34, 44, 42, 53, 53, + 52, 48, 49, 52, 229, 46, 36, 41, 48, 49, + 46, 48, 41, 41, 46, 119, 41, 41, 226, 44, + 41, 41, 119, 143, 143, 58, 58, 58, 58, 221, + 41, 58, 220, 213, 212, 41, 211, 59, 59, 59, + 59, 41, 43, 59, 194, 43, 190, 43, 43, 43, + 58, 43, 189, 188, 43, 43, 43, 50, 187, 50, + 43, 50, 59, 186, 180, 43, 50, 43, 177, 43, + 43, 176, 43, 60, 60, 60, 60, 50, 175, 60, - 61, 138, 61, 59, 61, 61, 61, 61, 123, 133, - 133, 133, 133, 123, 126, 125, 126, 60, 126, 126, - 126, 126, 118, 116, 123, 115, 127, 113, 127, 123, - 127, 127, 127, 127, 128, 128, 128, 128, 112, 129, - 128, 129, 111, 129, 129, 129, 129, 130, 130, 130, - 130, 110, 109, 130, 101, 131, 97, 131, 128, 131, - 131, 131, 131, 175, 175, 175, 175, 176, 176, 176, - 176, 130, 177, 177, 177, 177, 178, 178, 178, 178, - 179, 179, 179, 179, 180, 180, 180, 180, 181, 181, - 181, 181, 182, 182, 182, 182, 95, 92, 90, 87, + 162, 161, 50, 61, 61, 61, 61, 160, 62, 61, + 62, 62, 62, 62, 62, 157, 144, 62, 60, 63, + 137, 63, 133, 63, 63, 63, 63, 132, 61, 142, + 130, 142, 129, 142, 128, 145, 62, 145, 142, 145, + 145, 145, 145, 127, 126, 118, 146, 114, 146, 142, + 146, 146, 146, 146, 142, 147, 147, 147, 147, 111, + 148, 147, 148, 104, 148, 148, 148, 148, 149, 149, + 149, 149, 102, 99, 149, 97, 94, 150, 91, 150, + 147, 150, 150, 150, 150, 151, 151, 151, 151, 152, + 152, 152, 152, 149, 200, 200, 200, 200, 201, 201, - 85, 83, 82, 81, 78, 77, 76, 75, 73, 72, - 69, 67, 64, 63, 55, 49, 45, 43, 42, 38, - 36, 35, 34, 29, 28, 27, 25, 24, 20, 18, - 8, 5, 201, 201, 201, 201, 201, 201, 201, 201, - 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, - 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, - 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, - 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, - 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, - 201, 201, 201, 201, 201, 201 + 201, 201, 202, 202, 202, 202, 203, 203, 203, 203, + 204, 204, 204, 204, 205, 205, 205, 205, 206, 206, + 206, 206, 207, 207, 207, 207, 89, 86, 85, 84, + 81, 80, 79, 78, 77, 75, 74, 71, 69, 66, + 65, 57, 51, 47, 45, 40, 38, 37, 33, 30, + 29, 28, 26, 25, 21, 18, 8, 5, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228 } ; static yy_state_type yy_last_accepting_state; @@ -596,23 +608,28 @@ int yy_flex_debug = 0; #define YY_MORE_ADJ 0 #define YY_RESTORE_YY_MORE_OFFSET char *yytext; -#line 1 "" -#line 2 "" +#line 1 "QuantityParser.l" +#line 2 "QuantityParser.l" /* Lexer for the FreeCAD Units language */ /* (c) 2013 Juergen Riegel LGPL */ -/* flex --outfile=QuantityLexer.c QuantityParser.l */ +/* use this file to generate the file 'QuantityLexer.c' using the program flex + * the command for this operation is: + * flex --outfile=QuantityLexer.c QuantityParser.l + * (flex for Windows is available here: + * https://sourceforge.net/projects/winflexbison/ + * (you must then change 'flex' to 'win_flex' in the command)) */ /* This disables inclusion of unistd.h, which is not available under Visual C++ * on Win32. The C++ scanner uses STL streams instead. */ #define YY_NO_UNISTD_H -#line 611 "QuantityLexer.c" +#line 628 "QuantityLexer.c" /*** Flex Declarations and Options ***/ /* the manual says "somewhat more optimized" */ /* no support for include files is planned */ -#line 616 "QuantityLexer.c" +#line 633 "QuantityLexer.c" #define INITIAL 0 #define C_COMMENT 1 @@ -828,10 +845,10 @@ YY_DECL } { -#line 32 "" +#line 37 "QuantityParser.l" -#line 835 "QuantityLexer.c" +#line 852 "QuantityLexer.c" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -858,13 +875,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 202 ) + if ( yy_current_state >= 229 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_current_state != 201 ); + while ( yy_current_state != 228 ); yy_cp = (yy_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); @@ -886,551 +903,676 @@ do_action: /* This label is used only to access EOF actions. */ case 1: YY_RULE_SETUP -#line 34 "" +#line 39 "QuantityParser.l" { BEGIN(C_COMMENT); } YY_BREAK case 2: YY_RULE_SETUP -#line 35 "" +#line 40 "QuantityParser.l" { BEGIN(INITIAL); } YY_BREAK case 3: YY_RULE_SETUP -#line 36 "" +#line 41 "QuantityParser.l" { ;} YY_BREAK case 4: YY_RULE_SETUP -#line 39 "" +#line 44 "QuantityParser.l" ; YY_BREAK case 5: /* rule 5 can match eol */ YY_RULE_SETUP -#line 40 "" +#line 45 "QuantityParser.l" ; YY_BREAK case 6: YY_RULE_SETUP -#line 42 "" +#line 47 "QuantityParser.l" { return *yytext; } YY_BREAK case 7: YY_RULE_SETUP -#line 44 "" +#line 49 "QuantityParser.l" return MINUSSIGN; YY_BREAK case 8: YY_RULE_SETUP -#line 45 "" +#line 50 "QuantityParser.l" return MINUSSIGN; YY_BREAK case 9: YY_RULE_SETUP -#line 47 "" +#line 52 "QuantityParser.l" yylval = Quantity::NanoMetre; return UNIT; // nano meter YY_BREAK case 10: YY_RULE_SETUP -#line 48 "" +#line 53 "QuantityParser.l" yylval = Quantity::MicroMetre; return UNIT; // micro meter YY_BREAK case 11: YY_RULE_SETUP -#line 49 "" +#line 54 "QuantityParser.l" yylval = Quantity::MicroMetre; return UNIT; // micro meter (greek micro in UTF8) YY_BREAK case 12: YY_RULE_SETUP -#line 50 "" +#line 55 "QuantityParser.l" yylval = Quantity::MilliMetre; return UNIT; // milli meter (internal standard length) YY_BREAK case 13: YY_RULE_SETUP -#line 51 "" +#line 56 "QuantityParser.l" yylval = Quantity::CentiMetre; return UNIT; // centi meter YY_BREAK case 14: YY_RULE_SETUP -#line 52 "" +#line 57 "QuantityParser.l" yylval = Quantity::DeciMetre; return UNIT; // deci meter YY_BREAK case 15: YY_RULE_SETUP -#line 53 "" -yylval = Quantity::Metre; return UNIT; // metre +#line 58 "QuantityParser.l" +yylval = Quantity::Metre; return UNIT; // Metre YY_BREAK case 16: YY_RULE_SETUP -#line 54 "" +#line 59 "QuantityParser.l" yylval = Quantity::KiloMetre; return UNIT; // kilo meter YY_BREAK case 17: YY_RULE_SETUP -#line 56 "" -yylval = Quantity::Liter; return UNIT; // Liter dm^3 +#line 61 "QuantityParser.l" +yylval = Quantity::Liter; return UNIT; // Liter (dm^3) YY_BREAK case 18: YY_RULE_SETUP -#line 58 "" -yylval = Quantity::Hertz; return UNIT; // Hertz +#line 62 "QuantityParser.l" +yylval = Quantity::MilliLiter; return UNIT; // milli Liter YY_BREAK case 19: YY_RULE_SETUP -#line 59 "" -yylval = Quantity::KiloHertz; return UNIT; // Kilo Hertz +#line 64 "QuantityParser.l" +yylval = Quantity::Hertz; return UNIT; // Hertz YY_BREAK case 20: YY_RULE_SETUP -#line 60 "" -yylval = Quantity::MegaHertz; return UNIT; // Mega Hertz +#line 65 "QuantityParser.l" +yylval = Quantity::KiloHertz; return UNIT; // kilo Hertz YY_BREAK case 21: YY_RULE_SETUP -#line 61 "" -yylval = Quantity::GigaHertz; return UNIT; // Giga Hertz +#line 66 "QuantityParser.l" +yylval = Quantity::MegaHertz; return UNIT; // mega Hertz YY_BREAK case 22: YY_RULE_SETUP -#line 63 "" -yylval = Quantity::MicroGram; return UNIT; // micro gram +#line 67 "QuantityParser.l" +yylval = Quantity::GigaHertz; return UNIT; // giga Hertz YY_BREAK case 23: YY_RULE_SETUP -#line 64 "" +#line 69 "QuantityParser.l" yylval = Quantity::MicroGram; return UNIT; // micro gram YY_BREAK case 24: YY_RULE_SETUP -#line 65 "" -yylval = Quantity::MilliGram; return UNIT; // milli gram +#line 70 "QuantityParser.l" +yylval = Quantity::MicroGram; return UNIT; // micro gram YY_BREAK case 25: YY_RULE_SETUP -#line 66 "" -yylval = Quantity::Gram; return UNIT; // gram +#line 71 "QuantityParser.l" +yylval = Quantity::MilliGram; return UNIT; // milli gram YY_BREAK case 26: YY_RULE_SETUP -#line 67 "" -yylval = Quantity::KiloGram; return UNIT; // kilo gram (internal standard for mass) +#line 72 "QuantityParser.l" +yylval = Quantity::Gram; return UNIT; // gram YY_BREAK case 27: YY_RULE_SETUP -#line 68 "" -yylval = Quantity::Ton; return UNIT; // Metric Tonne +#line 73 "QuantityParser.l" +yylval = Quantity::KiloGram; return UNIT; // kilo gram (internal standard for mass) YY_BREAK case 28: YY_RULE_SETUP -#line 70 "" -yylval = Quantity::Second; return UNIT; // second (internal standard time) +#line 74 "QuantityParser.l" +yylval = Quantity::Ton; return UNIT; // Metric Tonne YY_BREAK case 29: YY_RULE_SETUP -#line 71 "" -yylval = Quantity::Minute; return UNIT; // minute +#line 76 "QuantityParser.l" +yylval = Quantity::Second; return UNIT; // second (internal standard time) YY_BREAK case 30: YY_RULE_SETUP -#line 72 "" -yylval = Quantity::Hour; return UNIT; // hour +#line 77 "QuantityParser.l" +yylval = Quantity::Minute; return UNIT; // minute YY_BREAK case 31: YY_RULE_SETUP -#line 74 "" -yylval = Quantity::Ampere; return UNIT; // Ampere (internal standard electric current) +#line 78 "QuantityParser.l" +yylval = Quantity::Hour; return UNIT; // hour YY_BREAK case 32: YY_RULE_SETUP -#line 75 "" -yylval = Quantity::MilliAmpere; return UNIT; // milli Ampere +#line 80 "QuantityParser.l" +yylval = Quantity::Ampere; return UNIT; // Ampere (internal standard electric current) YY_BREAK case 33: YY_RULE_SETUP -#line 76 "" -yylval = Quantity::KiloAmpere; return UNIT; // kilo Ampere +#line 81 "QuantityParser.l" +yylval = Quantity::MilliAmpere; return UNIT; // milli Ampere YY_BREAK case 34: YY_RULE_SETUP -#line 77 "" -yylval = Quantity::MegaAmpere; return UNIT; // Mega Ampere +#line 82 "QuantityParser.l" +yylval = Quantity::KiloAmpere; return UNIT; // kilo Ampere YY_BREAK case 35: YY_RULE_SETUP -#line 79 "" -yylval = Quantity::Kelvin; return UNIT; // Kelvin (internal standard thermodynamic temperature) +#line 83 "QuantityParser.l" +yylval = Quantity::MegaAmpere; return UNIT; // mega Ampere YY_BREAK case 36: YY_RULE_SETUP -#line 80 "" -yylval = Quantity::MilliKelvin; return UNIT; // Kelvin +#line 85 "QuantityParser.l" +yylval = Quantity::Kelvin; return UNIT; // Kelvin (internal standard thermodynamic temperature) YY_BREAK case 37: YY_RULE_SETUP -#line 81 "" -yylval = Quantity::MicroKelvin; return UNIT; // Kelvin +#line 86 "QuantityParser.l" +yylval = Quantity::MilliKelvin; return UNIT; // milli Kelvin YY_BREAK case 38: YY_RULE_SETUP -#line 82 "" -yylval = Quantity::MicroKelvin; return UNIT; // Kelvin +#line 87 "QuantityParser.l" +yylval = Quantity::MicroKelvin; return UNIT; // micro Kelvin YY_BREAK case 39: YY_RULE_SETUP -#line 84 "" -yylval = Quantity::Mole; return UNIT; // Mole (internal standard amount of substance) +#line 88 "QuantityParser.l" +yylval = Quantity::MicroKelvin; return UNIT; // micro Kelvin YY_BREAK case 40: YY_RULE_SETUP -#line 86 "" -yylval = Quantity::Candela; return UNIT; // Candela (internal standard luminous intensity) +#line 90 "QuantityParser.l" +yylval = Quantity::Mole; return UNIT; // Mole (internal standard amount of substance) YY_BREAK case 41: YY_RULE_SETUP -#line 88 "" -yylval = Quantity::Inch; return UNIT; // inch +#line 91 "QuantityParser.l" +yylval = Quantity::MilliMole; return UNIT; // Milli Mole YY_BREAK case 42: YY_RULE_SETUP -#line 89 "" -yylval = Quantity::Inch; return UNIT; // inch +#line 93 "QuantityParser.l" +yylval = Quantity::Candela; return UNIT; // Candela (internal standard luminous intensity) YY_BREAK case 43: YY_RULE_SETUP -#line 90 "" -yylval = Quantity::Foot; return UNIT; // foot +#line 95 "QuantityParser.l" +yylval = Quantity::Inch; return UNIT; // inch YY_BREAK case 44: YY_RULE_SETUP -#line 91 "" -yylval = Quantity::Foot; return UNIT; // foot +#line 96 "QuantityParser.l" +yylval = Quantity::Inch; return UNIT; // inch YY_BREAK case 45: YY_RULE_SETUP -#line 92 "" -yylval = Quantity::Thou; return UNIT; // thou (in/1000) +#line 97 "QuantityParser.l" +yylval = Quantity::Foot; return UNIT; // foot YY_BREAK case 46: YY_RULE_SETUP -#line 93 "" -yylval = Quantity::Thou; return UNIT; // mil (the thou in US) +#line 98 "QuantityParser.l" +yylval = Quantity::Foot; return UNIT; // foot YY_BREAK case 47: YY_RULE_SETUP -#line 94 "" -yylval = Quantity::Yard; return UNIT; // yard +#line 99 "QuantityParser.l" +yylval = Quantity::Thou; return UNIT; // thou (in/1000) YY_BREAK case 48: YY_RULE_SETUP -#line 95 "" -yylval = Quantity::Mile; return UNIT; // mile +#line 100 "QuantityParser.l" +yylval = Quantity::Thou; return UNIT; // mil (the thou in US) YY_BREAK case 49: YY_RULE_SETUP -#line 99 "" -yylval = Quantity::Pound; return UNIT; // pound +#line 101 "QuantityParser.l" +yylval = Quantity::Yard; return UNIT; // yard YY_BREAK case 50: YY_RULE_SETUP -#line 100 "" -yylval = Quantity::Pound; return UNIT; // pound +#line 102 "QuantityParser.l" +yylval = Quantity::Mile; return UNIT; // mile YY_BREAK case 51: YY_RULE_SETUP -#line 101 "" -yylval = Quantity::Ounce; return UNIT; // ounce +#line 104 "QuantityParser.l" +yylval = Quantity::Pound; return UNIT; // pound YY_BREAK case 52: YY_RULE_SETUP -#line 102 "" -yylval = Quantity::Stone; return UNIT; // Stone +#line 105 "QuantityParser.l" +yylval = Quantity::Pound; return UNIT; // pound YY_BREAK case 53: YY_RULE_SETUP -#line 103 "" -yylval = Quantity::Hundredweights; return UNIT; // hundredweights +#line 106 "QuantityParser.l" +yylval = Quantity::Ounce; return UNIT; // ounce YY_BREAK case 54: YY_RULE_SETUP -#line 105 "" -yylval = Quantity::PoundForce; return UNIT; // pound +#line 107 "QuantityParser.l" +yylval = Quantity::Stone; return UNIT; // Stone YY_BREAK case 55: YY_RULE_SETUP -#line 107 "" -yylval = Quantity::Newton; return UNIT; // Newton (kg*m/s^2) +#line 108 "QuantityParser.l" +yylval = Quantity::Hundredweights; return UNIT; // hundredweights YY_BREAK case 56: YY_RULE_SETUP -#line 108 "" -yylval = Quantity::KiloNewton; return UNIT; // Newton +#line 110 "QuantityParser.l" +yylval = Quantity::PoundForce; return UNIT; // pound YY_BREAK case 57: YY_RULE_SETUP -#line 109 "" -yylval = Quantity::MegaNewton; return UNIT; // Newton +#line 112 "QuantityParser.l" +yylval = Quantity::Newton; return UNIT; // Newton (kg*m/s^2) YY_BREAK case 58: YY_RULE_SETUP -#line 110 "" -yylval = Quantity::MilliNewton; return UNIT; // Newton +#line 113 "QuantityParser.l" +yylval = Quantity::MilliNewton; return UNIT; // milli Newton YY_BREAK case 59: YY_RULE_SETUP -#line 112 "" -yylval = Quantity::Pascal; return UNIT; // Pascal (kg/m/s^2 or N/m^2) +#line 114 "QuantityParser.l" +yylval = Quantity::KiloNewton; return UNIT; // kilo Newton YY_BREAK case 60: YY_RULE_SETUP -#line 113 "" -yylval = Quantity::KiloPascal; return UNIT; // Pascal +#line 115 "QuantityParser.l" +yylval = Quantity::MegaNewton; return UNIT; // mega Newton YY_BREAK case 61: YY_RULE_SETUP -#line 114 "" -yylval = Quantity::MegaPascal; return UNIT; // Pascal +#line 117 "QuantityParser.l" +yylval = Quantity::Pascal; return UNIT; // Pascal (kg/m/s^2 or N/m^2) YY_BREAK case 62: YY_RULE_SETUP -#line 115 "" -yylval = Quantity::GigaPascal; return UNIT; // Pascal +#line 118 "QuantityParser.l" +yylval = Quantity::KiloPascal; return UNIT; // kilo Pascal YY_BREAK case 63: YY_RULE_SETUP -#line 117 "" -yylval = Quantity::Torr; return UNIT; // portion of Pascal ( 101325/760 ) +#line 119 "QuantityParser.l" +yylval = Quantity::MegaPascal; return UNIT; // mega Pascal YY_BREAK case 64: YY_RULE_SETUP -#line 118 "" -yylval = Quantity::mTorr; return UNIT; // +#line 120 "QuantityParser.l" +yylval = Quantity::GigaPascal; return UNIT; // giga Pascal YY_BREAK case 65: YY_RULE_SETUP -#line 119 "" -yylval = Quantity::yTorr; return UNIT; // +#line 122 "QuantityParser.l" +yylval = Quantity::Bar; return UNIT; // 1 bar = 100 kPa YY_BREAK case 66: YY_RULE_SETUP -#line 120 "" -yylval = Quantity::yTorr; return UNIT; // +#line 123 "QuantityParser.l" +yylval = Quantity::MilliBar; return UNIT; // milli Bar YY_BREAK case 67: YY_RULE_SETUP -#line 122 "" -yylval = Quantity::PSI; return UNIT; // pounds/in^2 +#line 125 "QuantityParser.l" +yylval = Quantity::Torr; return UNIT; // portion of Pascal ( 101325/760 ) YY_BREAK case 68: YY_RULE_SETUP -#line 123 "" -yylval = Quantity::KSI; return UNIT; // 1000 x pounds/in^2 +#line 126 "QuantityParser.l" +yylval = Quantity::mTorr; return UNIT; // YY_BREAK case 69: YY_RULE_SETUP -#line 125 "" -yylval = Quantity::Watt; return UNIT; // Watt (kg*m^2/s^3) +#line 127 "QuantityParser.l" +yylval = Quantity::yTorr; return UNIT; // YY_BREAK case 70: YY_RULE_SETUP -#line 126 "" -yylval = Quantity::VoltAmpere; return UNIT; // VoltAmpere (kg*m^2/s^3) +#line 128 "QuantityParser.l" +yylval = Quantity::yTorr; return UNIT; // YY_BREAK case 71: YY_RULE_SETUP -#line 128 "" -yylval = Quantity::Volt; return UNIT; // Volt (kg*m^2/A/s^3) +#line 130 "QuantityParser.l" +yylval = Quantity::PSI; return UNIT; // pounds/in^2 YY_BREAK case 72: YY_RULE_SETUP -#line 130 "" -yylval = Quantity::Joule; return UNIT; // Joule (kg*m^2/s^2) +#line 131 "QuantityParser.l" +yylval = Quantity::KSI; return UNIT; // 1000 x pounds/in^2 YY_BREAK case 73: YY_RULE_SETUP -#line 131 "" -yylval = Quantity::NewtonMeter; return UNIT; // N*m = Joule +#line 133 "QuantityParser.l" +yylval = Quantity::Watt; return UNIT; // Watt (kg*m^2/s^3) YY_BREAK case 74: YY_RULE_SETUP -#line 132 "" -yylval = Quantity::VoltAmpereSecond; return UNIT; // V*A*s = Joule +#line 134 "QuantityParser.l" +yylval = Quantity::MilliWatt; return UNIT; // milli Watt YY_BREAK case 75: YY_RULE_SETUP -#line 133 "" -yylval = Quantity::WattSecond; return UNIT; // +#line 135 "QuantityParser.l" +yylval = Quantity::KiloWatt; return UNIT; // kilo Watt YY_BREAK case 76: YY_RULE_SETUP -#line 134 "" -yylval = Quantity::WattSecond; return UNIT; // W*s = Joule +#line 136 "QuantityParser.l" +yylval = Quantity::VoltAmpere; return UNIT; // VoltAmpere (kg*m^2/s^3) YY_BREAK case 77: YY_RULE_SETUP -#line 136 "" -yylval = Quantity::Degree; return UNIT; // degree (internal standard angle) +#line 138 "QuantityParser.l" +yylval = Quantity::Volt; return UNIT; // Volt (kg*m^2/A/s^3) YY_BREAK case 78: YY_RULE_SETUP -#line 137 "" -yylval = Quantity::Degree; return UNIT; // degree (internal standard angle) +#line 139 "QuantityParser.l" +yylval = Quantity::KiloVolt; return UNIT; // kilo Volt YY_BREAK case 79: YY_RULE_SETUP -#line 138 "" -yylval = Quantity::Radian; return UNIT; // radian +#line 140 "QuantityParser.l" +yylval = Quantity::MilliVolt; return UNIT; // milli Volt YY_BREAK case 80: YY_RULE_SETUP -#line 139 "" -yylval = Quantity::Gon; return UNIT; // gon +#line 142 "QuantityParser.l" +yylval = Quantity::Coulomb; return UNIT; // Coulomb (A*s) YY_BREAK case 81: YY_RULE_SETUP -#line 140 "" -yylval = Quantity::AngMinute; return UNIT; // minute(Angular) +#line 144 "QuantityParser.l" +yylval = Quantity::Tesla; return UNIT; // Tesla (kg/s^2/A) YY_BREAK case 82: YY_RULE_SETUP -#line 141 "" -yylval = Quantity::AngMinute; return UNIT; // minute(Angular) +#line 146 "QuantityParser.l" +yylval = Quantity::Farad; return UNIT; // Farad (s^4*A^2/m^2/kg) YY_BREAK case 83: YY_RULE_SETUP -#line 142 "" -yylval = Quantity::AngSecond; return UNIT; // second(Angular) +#line 147 "QuantityParser.l" +yylval = Quantity::MilliFarad; return UNIT; // milli Farad YY_BREAK case 84: YY_RULE_SETUP -#line 143 "" -yylval = Quantity::AngSecond; return UNIT; // second(Angular) +#line 148 "QuantityParser.l" +yylval = Quantity::MicroFarad; return UNIT; // micro Farad YY_BREAK case 85: YY_RULE_SETUP -#line 145 "" -yylval = Quantity(1.0); return ONE; +#line 149 "QuantityParser.l" +yylval = Quantity::MicroFarad; return UNIT; // micro Farad YY_BREAK case 86: YY_RULE_SETUP -#line 146 "" -{ yylval = Quantity(num_change(yytext,'.',','));return NUM; } +#line 150 "QuantityParser.l" +yylval = Quantity::NanoFarad; return UNIT; // nano Farad YY_BREAK case 87: YY_RULE_SETUP -#line 147 "" -{ yylval = Quantity(num_change(yytext,'.',','));return NUM; } +#line 151 "QuantityParser.l" +yylval = Quantity::PicoFarad; return UNIT; // pico Farad YY_BREAK case 88: YY_RULE_SETUP -#line 148 "" -{ yylval = Quantity(num_change(yytext,',','.'));return NUM; } +#line 153 "QuantityParser.l" +yylval = Quantity::Henry; return UNIT; // Henry (kg*m^2/s^2/A^2) YY_BREAK case 89: YY_RULE_SETUP -#line 149 "" -{ yylval = Quantity(num_change(yytext,',','.'));return NUM; } +#line 154 "QuantityParser.l" +yylval = Quantity::MilliHenry; return UNIT; // milli Henry YY_BREAK case 90: YY_RULE_SETUP -#line 152 "" -{yylval = Quantity(M_PI) ; return NUM;} // constant pi +#line 155 "QuantityParser.l" +yylval = Quantity::MicroHenry; return UNIT; // micro Henry YY_BREAK case 91: YY_RULE_SETUP -#line 153 "" -{yylval = Quantity(M_E) ; return NUM;} // constant e +#line 156 "QuantityParser.l" +yylval = Quantity::MicroHenry; return UNIT; // micro Henry YY_BREAK case 92: YY_RULE_SETUP -#line 155 "" -return ACOS; +#line 157 "QuantityParser.l" +yylval = Quantity::NanoHenry; return UNIT; // nano Henry YY_BREAK case 93: YY_RULE_SETUP -#line 156 "" -return ASIN; +#line 159 "QuantityParser.l" +yylval = Quantity::Joule; return UNIT; // Joule (kg*m^2/s^2) YY_BREAK case 94: YY_RULE_SETUP -#line 157 "" -return ATAN; +#line 160 "QuantityParser.l" +yylval = Quantity::MilliJoule; return UNIT; // milli Joule YY_BREAK case 95: YY_RULE_SETUP -#line 158 "" -return ATAN2; +#line 161 "QuantityParser.l" +yylval = Quantity::KiloJoule; return UNIT; // kilo Joule YY_BREAK case 96: YY_RULE_SETUP -#line 159 "" -return COS; +#line 162 "QuantityParser.l" +yylval = Quantity::NewtonMeter; return UNIT; // N*m = Joule YY_BREAK case 97: YY_RULE_SETUP -#line 160 "" -return EXP; +#line 163 "QuantityParser.l" +yylval = Quantity::VoltAmpereSecond; return UNIT; // V*A*s = Joule YY_BREAK case 98: YY_RULE_SETUP -#line 161 "" -return ABS; +#line 164 "QuantityParser.l" +yylval = Quantity::WattSecond; return UNIT; // YY_BREAK case 99: YY_RULE_SETUP -#line 162 "" -return MOD; +#line 165 "QuantityParser.l" +yylval = Quantity::WattSecond; return UNIT; // W*s = Joule YY_BREAK case 100: YY_RULE_SETUP -#line 163 "" -return LOG; +#line 166 "QuantityParser.l" +yylval = Quantity::KiloWattHour; return UNIT; // 1 kWh = 3.6e6 J YY_BREAK case 101: YY_RULE_SETUP -#line 164 "" -return LOG10; +#line 167 "QuantityParser.l" +yylval = Quantity::ElectronVolt; return UNIT; // 1 eV = 1.602176634e-19 J YY_BREAK case 102: YY_RULE_SETUP -#line 165 "" -return POW; +#line 169 "QuantityParser.l" +yylval = Quantity::Degree; return UNIT; // degree (internal standard angle) YY_BREAK case 103: YY_RULE_SETUP -#line 166 "" -return SIN; +#line 170 "QuantityParser.l" +yylval = Quantity::Degree; return UNIT; // degree (internal standard angle) YY_BREAK case 104: YY_RULE_SETUP -#line 167 "" -return SINH; +#line 171 "QuantityParser.l" +yylval = Quantity::Radian; return UNIT; // radian YY_BREAK case 105: YY_RULE_SETUP -#line 168 "" -return TAN; +#line 172 "QuantityParser.l" +yylval = Quantity::Gon; return UNIT; // gon YY_BREAK case 106: YY_RULE_SETUP -#line 169 "" -return TANH; +#line 173 "QuantityParser.l" +yylval = Quantity::AngMinute; return UNIT; // minute(Angular) YY_BREAK case 107: YY_RULE_SETUP -#line 170 "" -return SQRT; +#line 174 "QuantityParser.l" +yylval = Quantity::AngMinute; return UNIT; // minute(Angular) YY_BREAK case 108: YY_RULE_SETUP -#line 172 "" -return *yytext; +#line 175 "QuantityParser.l" +yylval = Quantity::AngSecond; return UNIT; // second(Angular) YY_BREAK case 109: YY_RULE_SETUP -#line 173 "" +#line 176 "QuantityParser.l" +yylval = Quantity::AngSecond; return UNIT; // second(Angular) + YY_BREAK +case 110: +YY_RULE_SETUP +#line 178 "QuantityParser.l" +yylval = Quantity(1.0); return ONE; + YY_BREAK +case 111: +YY_RULE_SETUP +#line 179 "QuantityParser.l" +{ yylval = Quantity(num_change(yytext,'.',','));return NUM; } + YY_BREAK +case 112: +YY_RULE_SETUP +#line 180 "QuantityParser.l" +{ yylval = Quantity(num_change(yytext,'.',','));return NUM; } + YY_BREAK +case 113: +YY_RULE_SETUP +#line 181 "QuantityParser.l" +{ yylval = Quantity(num_change(yytext,',','.'));return NUM; } + YY_BREAK +case 114: +YY_RULE_SETUP +#line 182 "QuantityParser.l" +{ yylval = Quantity(num_change(yytext,',','.'));return NUM; } + YY_BREAK +case 115: +YY_RULE_SETUP +#line 185 "QuantityParser.l" +{yylval = Quantity(M_PI) ; return NUM;} // constant pi + YY_BREAK +case 116: +YY_RULE_SETUP +#line 186 "QuantityParser.l" +{yylval = Quantity(M_E) ; return NUM;} // constant e + YY_BREAK +case 117: +YY_RULE_SETUP +#line 188 "QuantityParser.l" +return ACOS; + YY_BREAK +case 118: +YY_RULE_SETUP +#line 189 "QuantityParser.l" +return ASIN; + YY_BREAK +case 119: +YY_RULE_SETUP +#line 190 "QuantityParser.l" +return ATAN; + YY_BREAK +case 120: +YY_RULE_SETUP +#line 191 "QuantityParser.l" +return ATAN2; + YY_BREAK +case 121: +YY_RULE_SETUP +#line 192 "QuantityParser.l" +return COS; + YY_BREAK +case 122: +YY_RULE_SETUP +#line 193 "QuantityParser.l" +return EXP; + YY_BREAK +case 123: +YY_RULE_SETUP +#line 194 "QuantityParser.l" +return ABS; + YY_BREAK +case 124: +YY_RULE_SETUP +#line 195 "QuantityParser.l" +return MOD; + YY_BREAK +case 125: +YY_RULE_SETUP +#line 196 "QuantityParser.l" +return LOG; + YY_BREAK +case 126: +YY_RULE_SETUP +#line 197 "QuantityParser.l" +return LOG10; + YY_BREAK +case 127: +YY_RULE_SETUP +#line 198 "QuantityParser.l" +return POW; + YY_BREAK +case 128: +YY_RULE_SETUP +#line 199 "QuantityParser.l" +return SIN; + YY_BREAK +case 129: +YY_RULE_SETUP +#line 200 "QuantityParser.l" +return SINH; + YY_BREAK +case 130: +YY_RULE_SETUP +#line 201 "QuantityParser.l" +return TAN; + YY_BREAK +case 131: +YY_RULE_SETUP +#line 202 "QuantityParser.l" +return TANH; + YY_BREAK +case 132: +YY_RULE_SETUP +#line 203 "QuantityParser.l" +return SQRT; + YY_BREAK +case 133: +YY_RULE_SETUP +#line 205 "QuantityParser.l" +return *yytext; + YY_BREAK +case 134: +YY_RULE_SETUP +#line 206 "QuantityParser.l" ECHO; YY_BREAK -#line 1434 "QuantityLexer.c" +#line 1576 "QuantityLexer.c" case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(C_COMMENT): yyterminate(); @@ -1729,7 +1871,7 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 202 ) + if ( yy_current_state >= 229 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -1757,11 +1899,11 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 202 ) + if ( yy_current_state >= 229 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 201); + yy_is_jam = (yy_current_state == 228); return yy_is_jam ? 0 : yy_current_state; } @@ -2400,4 +2542,4 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 173 "" +#line 206 "QuantityParser.l" diff --git a/src/Base/QuantityParser.l b/src/Base/QuantityParser.l index e43832f8f2..b2d7749628 100644 --- a/src/Base/QuantityParser.l +++ b/src/Base/QuantityParser.l @@ -2,7 +2,12 @@ /* Lexer for the FreeCAD Units language */ /* (c) 2013 Juergen Riegel LGPL */ -/* flex --outfile=QuantityLexer.c QuantityParser.l */ +/* use this file to generate the file 'QuantityLexer.c' using the program flex + * the command for this operation is: + * flex --outfile=QuantityLexer.c QuantityParser.l + * (flex for Windows is available here: + * https://sourceforge.net/projects/winflexbison/ + * (you must then change 'flex' to 'win_flex' in the command)) */ /* This disables inclusion of unistd.h, which is not available under Visual C++ * on Win32. The C++ scanner uses STL streams instead. */ @@ -50,15 +55,16 @@ CGRP '\,'[0-9][0-9][0-9] "mm" yylval = Quantity::MilliMetre; return UNIT; // milli meter (internal standard length) "cm" yylval = Quantity::CentiMetre; return UNIT; // centi meter "dm" yylval = Quantity::DeciMetre; return UNIT; // deci meter -"m" yylval = Quantity::Metre; return UNIT; // metre +"m" yylval = Quantity::Metre; return UNIT; // Metre "km" yylval = Quantity::KiloMetre; return UNIT; // kilo meter -"l" yylval = Quantity::Liter; return UNIT; // Liter dm^3 +"l" yylval = Quantity::Liter; return UNIT; // Liter (dm^3) +"ml" yylval = Quantity::MilliLiter; return UNIT; // milli Liter "Hz" yylval = Quantity::Hertz; return UNIT; // Hertz -"kHz" yylval = Quantity::KiloHertz; return UNIT; // Kilo Hertz -"MHz" yylval = Quantity::MegaHertz; return UNIT; // Mega Hertz -"GHz" yylval = Quantity::GigaHertz; return UNIT; // Giga Hertz +"kHz" yylval = Quantity::KiloHertz; return UNIT; // kilo Hertz +"MHz" yylval = Quantity::MegaHertz; return UNIT; // mega Hertz +"GHz" yylval = Quantity::GigaHertz; return UNIT; // giga Hertz "ug" yylval = Quantity::MicroGram; return UNIT; // micro gram "\xC2\xB5g" yylval = Quantity::MicroGram; return UNIT; // micro gram @@ -74,14 +80,15 @@ CGRP '\,'[0-9][0-9][0-9] "A" yylval = Quantity::Ampere; return UNIT; // Ampere (internal standard electric current) "mA" yylval = Quantity::MilliAmpere; return UNIT; // milli Ampere "kA" yylval = Quantity::KiloAmpere; return UNIT; // kilo Ampere -"MA" yylval = Quantity::MegaAmpere; return UNIT; // Mega Ampere +"MA" yylval = Quantity::MegaAmpere; return UNIT; // mega Ampere "K" yylval = Quantity::Kelvin; return UNIT; // Kelvin (internal standard thermodynamic temperature) -"mK" yylval = Quantity::MilliKelvin; return UNIT; // Kelvin -"\xC2\xB5K" yylval = Quantity::MicroKelvin; return UNIT; // Kelvin -"uK" yylval = Quantity::MicroKelvin; return UNIT; // Kelvin +"mK" yylval = Quantity::MilliKelvin; return UNIT; // milli Kelvin +"\xC2\xB5K" yylval = Quantity::MicroKelvin; return UNIT; // micro Kelvin +"uK" yylval = Quantity::MicroKelvin; return UNIT; // micro Kelvin "mol" yylval = Quantity::Mole; return UNIT; // Mole (internal standard amount of substance) +"mmol" yylval = Quantity::MilliMole; return UNIT; // Milli Mole "cd" yylval = Quantity::Candela; return UNIT; // Candela (internal standard luminous intensity) @@ -94,8 +101,6 @@ CGRP '\,'[0-9][0-9][0-9] "yd" yylval = Quantity::Yard; return UNIT; // yard "mi" yylval = Quantity::Mile; return UNIT; // mile - - "lb" yylval = Quantity::Pound; return UNIT; // pound "lbm" yylval = Quantity::Pound; return UNIT; // pound "oz" yylval = Quantity::Ounce; return UNIT; // ounce @@ -105,14 +110,17 @@ CGRP '\,'[0-9][0-9][0-9] "lbf" yylval = Quantity::PoundForce; return UNIT; // pound "N" yylval = Quantity::Newton; return UNIT; // Newton (kg*m/s^2) -"kN" yylval = Quantity::KiloNewton; return UNIT; // Newton -"MN" yylval = Quantity::MegaNewton; return UNIT; // Newton -"mN" yylval = Quantity::MilliNewton; return UNIT; // Newton +"mN" yylval = Quantity::MilliNewton; return UNIT; // milli Newton +"kN" yylval = Quantity::KiloNewton; return UNIT; // kilo Newton +"MN" yylval = Quantity::MegaNewton; return UNIT; // mega Newton "Pa" yylval = Quantity::Pascal; return UNIT; // Pascal (kg/m/s^2 or N/m^2) -"kPa" yylval = Quantity::KiloPascal; return UNIT; // Pascal -"MPa" yylval = Quantity::MegaPascal; return UNIT; // Pascal -"GPa" yylval = Quantity::GigaPascal; return UNIT; // Pascal +"kPa" yylval = Quantity::KiloPascal; return UNIT; // kilo Pascal +"MPa" yylval = Quantity::MegaPascal; return UNIT; // mega Pascal +"GPa" yylval = Quantity::GigaPascal; return UNIT; // giga Pascal + +"bar" yylval = Quantity::Bar; return UNIT; // 1 bar = 100 kPa +"mbar" yylval = Quantity::MilliBar; return UNIT; // milli Bar "Torr" yylval = Quantity::Torr; return UNIT; // portion of Pascal ( 101325/760 ) "mTorr" yylval = Quantity::mTorr; return UNIT; // @@ -123,15 +131,40 @@ CGRP '\,'[0-9][0-9][0-9] "ksi" yylval = Quantity::KSI; return UNIT; // 1000 x pounds/in^2 "W" yylval = Quantity::Watt; return UNIT; // Watt (kg*m^2/s^3) +"mW" yylval = Quantity::MilliWatt; return UNIT; // milli Watt +"kW" yylval = Quantity::KiloWatt; return UNIT; // kilo Watt "VA" yylval = Quantity::VoltAmpere; return UNIT; // VoltAmpere (kg*m^2/s^3) "V" yylval = Quantity::Volt; return UNIT; // Volt (kg*m^2/A/s^3) +"kV" yylval = Quantity::KiloVolt; return UNIT; // kilo Volt +"mV" yylval = Quantity::MilliVolt; return UNIT; // milli Volt + +"C" yylval = Quantity::Coulomb; return UNIT; // Coulomb (A*s) + +"T" yylval = Quantity::Tesla; return UNIT; // Tesla (kg/s^2/A) + +"F" yylval = Quantity::Farad; return UNIT; // Farad (s^4*A^2/m^2/kg) +"mF" yylval = Quantity::MilliFarad; return UNIT; // milli Farad +"\xC2\xB5F" yylval = Quantity::MicroFarad; return UNIT; // micro Farad +"uF" yylval = Quantity::MicroFarad; return UNIT; // micro Farad +"nF" yylval = Quantity::NanoFarad; return UNIT; // nano Farad +"pF" yylval = Quantity::PicoFarad; return UNIT; // pico Farad + +"H" yylval = Quantity::Henry; return UNIT; // Henry (kg*m^2/s^2/A^2) +"mH" yylval = Quantity::MilliHenry; return UNIT; // milli Henry +"\xC2\xB5H" yylval = Quantity::MicroHenry; return UNIT; // micro Henry +"uH" yylval = Quantity::MicroHenry; return UNIT; // micro Henry +"nH" yylval = Quantity::NanoHenry; return UNIT; // nano Henry "J" yylval = Quantity::Joule; return UNIT; // Joule (kg*m^2/s^2) +"mJ" yylval = Quantity::MilliJoule; return UNIT; // milli Joule +"kJ" yylval = Quantity::KiloJoule; return UNIT; // kilo Joule "Nm" yylval = Quantity::NewtonMeter; return UNIT; // N*m = Joule "VAs" yylval = Quantity::VoltAmpereSecond; return UNIT; // V*A*s = Joule "CV" yylval = Quantity::WattSecond; return UNIT; // "Ws" yylval = Quantity::WattSecond; return UNIT; // W*s = Joule +"kWh" yylval = Quantity::KiloWattHour; return UNIT; // 1 kWh = 3.6e6 J +"eV" yylval = Quantity::ElectronVolt; return UNIT; // 1 eV = 1.602176634e-19 J "\xC2\xB0" yylval = Quantity::Degree; return UNIT; // degree (internal standard angle) "deg" yylval = Quantity::Degree; return UNIT; // degree (internal standard angle) diff --git a/src/Base/TypePyImp.cpp b/src/Base/TypePyImp.cpp index d103fdaf3d..69806d32ae 100644 --- a/src/Base/TypePyImp.cpp +++ b/src/Base/TypePyImp.cpp @@ -37,7 +37,7 @@ std::string TypePy::representation(void) const return str.str(); } -PyObject* TypePy::staticCallback_fromName (PyObject * /*self*/, PyObject *args) +PyObject* TypePy::fromName (PyObject *args) { const char *name; if (!PyArg_ParseTuple(args, "s", &name)) @@ -47,7 +47,7 @@ PyObject* TypePy::staticCallback_fromName (PyObject * /*self*/, PyObject *args) return new TypePy(new Base::Type(type)); } -PyObject* TypePy::staticCallback_fromKey (PyObject * /*self*/, PyObject *args) +PyObject* TypePy::fromKey (PyObject *args) { unsigned int index; if (!PyArg_ParseTuple(args, "I", &index)) @@ -57,7 +57,7 @@ PyObject* TypePy::staticCallback_fromKey (PyObject * /*self*/, PyObject *args) return new TypePy(new Base::Type(type)); } -PyObject* TypePy::staticCallback_getNumTypes (PyObject * /*self*/, PyObject *args) +PyObject* TypePy::getNumTypes (PyObject *args) { if (!PyArg_ParseTuple(args, "")) return nullptr; @@ -66,7 +66,7 @@ PyObject* TypePy::staticCallback_getNumTypes (PyObject * /*self*/, PyObject *arg return PyLong_FromLong(num); } -PyObject* TypePy::staticCallback_getBadType (PyObject * /*self*/, PyObject *args) +PyObject* TypePy::getBadType (PyObject *args) { if (!PyArg_ParseTuple(args, "")) return nullptr; @@ -120,7 +120,7 @@ PyObject* TypePy::isDerivedFrom(PyObject *args) return PyBool_FromLong(v ? 1 : 0); } -PyObject* TypePy::staticCallback_getAllDerivedFrom(PyObject* /*self*/, PyObject *args) +PyObject* TypePy::getAllDerivedFrom(PyObject *args) { Base::Type type; diff --git a/src/Base/Unit.cpp b/src/Base/Unit.cpp index f410569de4..132d4c332c 100644 --- a/src/Base/Unit.cpp +++ b/src/Base/Unit.cpp @@ -439,6 +439,10 @@ QString Unit::getTypeString(void) const if(*this == Unit::Temperature ) return QString::fromLatin1("Temperature"); if(*this == Unit::ElectricCurrent ) return QString::fromLatin1("ElectricCurrent"); if(*this == Unit::ElectricPotential ) return QString::fromLatin1("ElectricPotential"); + if(*this == Unit::ElectricCharge ) return QString::fromLatin1("ElectricCharge"); + if(*this == Unit::MagneticFluxDensity ) return QString::fromLatin1("MagneticFluxDensity"); + if(*this == Unit::ElectricalCapacitance ) return QString::fromLatin1("ElectricalCapacitance"); + if(*this == Unit::ElectricalInductance ) return QString::fromLatin1("ElectricalInductance"); if(*this == Unit::AmountOfSubstance ) return QString::fromLatin1("AmountOfSubstance"); if(*this == Unit::LuminousIntensity ) return QString::fromLatin1("LuminousIntensity"); if(*this == Unit::Pressure ) return QString::fromLatin1("Pressure"); @@ -478,6 +482,10 @@ Unit Unit::Temperature(0,0,0,0,1); Unit Unit::ElectricCurrent(0,0,0,1); Unit Unit::ElectricPotential(2,1,-3,-1); +Unit Unit::ElectricCharge(0,0,1,1); +Unit Unit::MagneticFluxDensity(0,1,-2,-1); +Unit Unit::ElectricalCapacitance(-2,-1,4,2); +Unit Unit::ElectricalInductance(2,1,-2,-2); Unit Unit::AmountOfSubstance(0,0,0,0,0,1); Unit Unit::LuminousIntensity(0,0,0,0,0,0,1); diff --git a/src/Base/Unit.h b/src/Base/Unit.h index 6a1d598a9c..502648c317 100644 --- a/src/Base/Unit.h +++ b/src/Base/Unit.h @@ -110,6 +110,10 @@ public: static Unit ElectricCurrent; static Unit ElectricPotential; + static Unit ElectricCharge; + static Unit MagneticFluxDensity; + static Unit ElectricalCapacitance; + static Unit ElectricalInductance; static Unit AmountOfSubstance; static Unit LuminousIntensity; diff --git a/src/Base/UnitsSchemaInternal.cpp b/src/Base/UnitsSchemaInternal.cpp index ca7c834824..35ad15be1c 100644 --- a/src/Base/UnitsSchemaInternal.cpp +++ b/src/Base/UnitsSchemaInternal.cpp @@ -52,7 +52,7 @@ QString UnitsSchemaInternal::schemaTranslate(const Quantity &quant, double &fact // now do special treatment on all cases seems necessary: if (unit == Unit::Length) { // Length handling ============================ - if (UnitValue < 0.000000001) {// smaller then 0.001 nm -> scientific notation + if (UnitValue < 0.000000001) {// smaller than 0.001 nm -> scientific notation unitString = QString::fromLatin1("mm"); factor = 1.0; } @@ -76,16 +76,46 @@ QString UnitsSchemaInternal::schemaTranslate(const Quantity &quant, double &fact unitString = QString::fromLatin1("km"); factor = 1000000.0; } - else { // bigger then 1000 km -> scientific notation + else { // bigger than 1000 km -> scientific notation unitString = QString::fromLatin1("mm"); factor = 1.0; } } else if (unit == Unit::Area) { - // TODO Cascade for the Areas - // default action for all cases without special treatment: - unitString = quant.getUnit().getString(); - factor = 1.0; + if (UnitValue < 100) { + unitString = QString::fromLatin1("mm^2"); + factor = 1.0; + } + else if (UnitValue < 1e6) { + unitString = QString::fromLatin1("cm^2"); + factor = 100; + } + else if (UnitValue < 1e12) { + unitString = QString::fromLatin1("m^2"); + factor = 1e6; + } + else { // bigger than 1 square kilometer + unitString = QString::fromLatin1("km^2"); + factor = 1e12; + } + } + else if (unit == Unit::Volume) { + if (UnitValue < 1e3) {// smaller than 1 ul + unitString = QString::fromLatin1("mm^3"); + factor = 1.0; + } + else if (UnitValue < 1e6) { + unitString = QString::fromLatin1("ml"); + factor = 1e3; + } + else if (UnitValue < 1e9) { + unitString = QString::fromLatin1("l"); + factor = 1e6; + } + else { // bigger than 1000 l + unitString = QString::fromLatin1("m^3"); + factor = 1e9; + } } else if (unit == Unit::Angle) { // TODO Cascade for the Areas @@ -94,10 +124,26 @@ QString UnitsSchemaInternal::schemaTranslate(const Quantity &quant, double &fact factor = 1.0; } else if (unit == Unit::Mass) { - // TODO Cascade for the weights - // default action for all cases without special treatment: - unitString = quant.getUnit().getString(); - factor = 1.0; + if (UnitValue < 1e-6) { + unitString = QString::fromUtf8("\xC2\xB5g"); + factor = 1e-9; + } + else if (UnitValue < 1e-3) { + unitString = QString::fromLatin1("mg"); + factor = 1e-6; + } + else if (UnitValue < 1.0) { + unitString = QString::fromLatin1("g"); + factor = 1e-3; + } + else if (UnitValue < 1e3) { + unitString = QString::fromLatin1("kg"); + factor = 1.0; + } + else { + unitString = QString::fromLatin1("t"); + factor = 1e3; + } } else if (unit == Unit::Density) { if (UnitValue < 0.0001) { @@ -163,13 +209,81 @@ QString UnitsSchemaInternal::schemaTranslate(const Quantity &quant, double &fact factor = 0.001; } } + else if (unit == Unit::Force) { + if (UnitValue < 1e3) { + unitString = QString::fromLatin1("mN"); + factor = 1.0; + } + else if (UnitValue < 1e6) { + unitString = QString::fromLatin1("N"); + factor = 1e3; + } + else if (UnitValue < 1e9) { + unitString = QString::fromLatin1("kN"); + factor = 1e6; + } + else { + unitString = QString::fromLatin1("MN"); + factor = 1e9; + } + } else if (unit == Unit::Power) { - unitString = QString::fromLatin1("W"); - factor = 1000000; + if (UnitValue < 1e6) { + unitString = QString::fromLatin1("mW"); + factor = 1e3; + } + else if (UnitValue < 1e9) { + unitString = QString::fromLatin1("W"); + factor = 1e6; + } + else { + unitString = QString::fromLatin1("kW"); + factor = 1e9; + } } else if (unit == Unit::ElectricPotential) { - unitString = QString::fromLatin1("V"); - factor = 1000000; + if (UnitValue < 1e6) { + unitString = QString::fromLatin1("mV"); + factor = 1e3; + } + else if (UnitValue < 1e9) { + unitString = QString::fromLatin1("V"); + factor = 1e6; + } + else if (UnitValue < 1e12) { + unitString = QString::fromLatin1("kV"); + factor = 1e9; + } + else { // > 1000 kV scientificc notation + unitString = QString::fromLatin1("V"); + factor = 1e6; + } + } + else if (unit == Unit::Work) { + if (UnitValue < 1.602176634e-10) { + unitString = QString::fromLatin1("eV"); + factor = 1.602176634e-13; + } + else if (UnitValue < 1e6) { + unitString = QString::fromLatin1("mJ"); + factor = 1e3; + } + else if (UnitValue < 1e9) { + unitString = QString::fromLatin1("J"); + factor = 1e6; + } + else if (UnitValue < 1e12) { + unitString = QString::fromLatin1("kJ"); + factor = 1e9; + } + else if (UnitValue < 3.6e+15) { + unitString = QString::fromLatin1("kWh"); + factor = 3.6e+12; + } + else { // bigger than 1000 kWh -> scientific notation + unitString = QString::fromLatin1("J"); + factor = 1e6; + } } else if (unit == Unit::SpecificEnergy) { unitString = QString::fromLatin1("m^2/s^2"); @@ -179,6 +293,54 @@ QString UnitsSchemaInternal::schemaTranslate(const Quantity &quant, double &fact unitString = QString::fromLatin1("W/m^2"); factor = 1.0; } + else if (unit == Unit::ElectricCharge) { + unitString = QString::fromLatin1("C"); + factor = 1.0; + } + else if (unit == Unit::MagneticFluxDensity) { + unitString = QString::fromLatin1("T"); + factor = 1.0; + } + else if (unit == Unit::ElectricalCapacitance) { + if (UnitValue < 1e-15) { + unitString = QString::fromLatin1("pF"); + factor = 1e-18; + } + else if (UnitValue < 1e-12) { + unitString = QString::fromLatin1("nF"); + factor = 1e-15; + } + else if (UnitValue < 1e-9) { + unitString = QString::fromUtf8("\xC2\xB5""F"); // \x reads everything to the end, therefore split + factor = 1e-12; + } + else if (UnitValue < 1e-6) { + unitString = QString::fromLatin1("mF"); + factor = 1e-9; + } + else { + unitString = QString::fromLatin1("F"); + factor = 1e-6; + } + } + else if (unit == Unit::ElectricalInductance) { + if (UnitValue < 1.0) { + unitString = QString::fromLatin1("nH"); + factor = 1e-3; + } + else if (UnitValue < 1e3) { + unitString = QString::fromUtf8("\xC2\xB5H"); + factor = 1.0; + } + else if (UnitValue < 1e6) { + unitString = QString::fromLatin1("mH"); + factor = 1e3; + } + else { + unitString = QString::fromLatin1("H"); + factor = 1e6; + } + } else if (unit == Unit::Frequency) { if (UnitValue < 1000.0) { unitString = QString::fromLatin1("Hz"); diff --git a/src/Base/UnitsSchemaMKS.cpp b/src/Base/UnitsSchemaMKS.cpp index 23ffcbb40b..eee1aa7445 100644 --- a/src/Base/UnitsSchemaMKS.cpp +++ b/src/Base/UnitsSchemaMKS.cpp @@ -73,24 +73,62 @@ QString UnitsSchemaMKS::schemaTranslate(const Quantity &quant, double &factor, Q } } else if (unit == Unit::Area) { - if (UnitValue < 100.0) {// smaller than 1 square cm + if (UnitValue < 100) { unitString = QString::fromLatin1("mm^2"); factor = 1.0; } - else if (UnitValue < 10000000000000.0) { - unitString = QString::fromLatin1("m^2"); - factor = 1000000.0; + else if (UnitValue < 1e6) { + unitString = QString::fromLatin1("cm^2"); + factor = 100; } - else { // bigger then 1 square kilometer + else if (UnitValue < 1e12) { + unitString = QString::fromLatin1("m^2"); + factor = 1e6; + } + else { // bigger than 1 square kilometer unitString = QString::fromLatin1("km^2"); - factor = 1000000000000.0; + factor = 1e12; + } + } + else if (unit == Unit::Volume) { + if (UnitValue < 1e3) {// smaller than 1 ul + unitString = QString::fromLatin1("mm^3"); + factor = 1.0; + } + else if (UnitValue < 1e6) { + unitString = QString::fromLatin1("ml"); + factor = 1e3; + } + else if (UnitValue < 1e9) { + unitString = QString::fromLatin1("l"); + factor = 1e6; + } + else { // bigger than 1000 l + unitString = QString::fromLatin1("m^3"); + factor = 1e9; } } else if (unit == Unit::Mass) { - // TODO Cascade for the weights - // default action for all cases without special treatment: - unitString = quant.getUnit().getString(); - factor = 1.0; + if (UnitValue < 1e-6) { + unitString = QString::fromUtf8("\xC2\xB5g"); + factor = 1e-9; + } + else if (UnitValue < 1e-3) { + unitString = QString::fromLatin1("mg"); + factor = 1e-6; + } + else if (UnitValue < 1.0) { + unitString = QString::fromLatin1("g"); + factor = 1e-3; + } + else if (UnitValue < 1e3) { + unitString = QString::fromLatin1("kg"); + factor = 1.0; + } + else { + unitString = QString::fromLatin1("t"); + factor = 1e3; + } } else if (unit == Unit::Density) { if (UnitValue < 0.0001) { @@ -120,6 +158,10 @@ QString UnitsSchemaMKS::schemaTranslate(const Quantity &quant, double &factor, Q factor = 1000000000000000000.0; } } + else if (unit == Unit::Acceleration) { + unitString = QString::fromLatin1("m/s^2"); + factor = 1000.0; + } else if ((unit == Unit::Pressure) || (unit == Unit::Stress)) { if (UnitValue < 10.0) {// Pa is the smallest unitString = QString::fromLatin1("Pa"); @@ -170,13 +212,129 @@ QString UnitsSchemaMKS::schemaTranslate(const Quantity &quant, double &factor, Q unitString = QString::fromLatin1("W/m^2/K"); factor = 1.0; } + else if (unit == Unit::Force) { + if (UnitValue < 1e3) { + unitString = QString::fromLatin1("mN"); + factor = 1.0; + } + else if (UnitValue < 1e6) { + unitString = QString::fromLatin1("N"); + factor = 1e3; + } + else if (UnitValue < 1e9) { + unitString = QString::fromLatin1("kN"); + factor = 1e6; + } + else { + unitString = QString::fromLatin1("MN"); + factor = 1e9; + } + } else if (unit == Unit::Power) { - unitString = QString::fromLatin1("W"); - factor = 1000000; + if (UnitValue < 1e6) { + unitString = QString::fromLatin1("mW"); + factor = 1e3; + } + else if (UnitValue < 1e9) { + unitString = QString::fromLatin1("W"); + factor = 1e6; + } + else { + unitString = QString::fromLatin1("kW"); + factor = 1e9; + } } else if (unit == Unit::ElectricPotential) { - unitString = QString::fromLatin1("V"); - factor = 1000000; + if (UnitValue < 1e6) { + unitString = QString::fromLatin1("mV"); + factor = 1e3; + } + else if (UnitValue < 1e9) { + unitString = QString::fromLatin1("V"); + factor = 1e6; + } + else if (UnitValue < 1e12) { + unitString = QString::fromLatin1("kV"); + factor = 1e9; + } + else { // > 1000 kV scientificc notation + unitString = QString::fromLatin1("V"); + factor = 1e6; + } + } + else if (unit == Unit::ElectricCharge) { + unitString = QString::fromLatin1("C"); + factor = 1.0; + } + else if (unit == Unit::MagneticFluxDensity) { + unitString = QString::fromLatin1("T"); + factor = 1.0; + } + else if (unit == Unit::ElectricalCapacitance) { + if (UnitValue < 1e-15) { + unitString = QString::fromLatin1("pF"); + factor = 1e-18; + } + else if (UnitValue < 1e-12) { + unitString = QString::fromLatin1("nF"); + factor = 1e-15; + } + else if (UnitValue < 1e-9) { + unitString = QString::fromUtf8("\xC2\xB5""F"); // \x reads everything to the end, therefore split + factor = 1e-12; + } + else if (UnitValue < 1e-6) { + unitString = QString::fromLatin1("mF"); + factor = 1e-9; + } + else { + unitString = QString::fromLatin1("F"); + factor = 1e-6; + } + } + else if (unit == Unit::ElectricalInductance) { + if (UnitValue < 1e-6) { + unitString = QString::fromLatin1("nH"); + factor = 1e-3; + } + else if (UnitValue < 1e-3) { + unitString = QString::fromUtf8("\xC2\xB5H"); + factor = 1.0; + } + else if (UnitValue < 1.0) { + unitString = QString::fromLatin1("mH"); + factor = 1e3; + } + else { + unitString = QString::fromLatin1("H"); + factor = 1e6; + } + } + else if (unit == Unit::Work) { + if (UnitValue < 1.602176634e-10) { + unitString = QString::fromLatin1("eV"); + factor = 1.602176634e-13; + } + else if (UnitValue < 1e6) { + unitString = QString::fromLatin1("mJ"); + factor = 1e3; + } + else if (UnitValue < 1e9) { + unitString = QString::fromLatin1("J"); + factor = 1e6; + } + else if (UnitValue < 1e12) { + unitString = QString::fromLatin1("kJ"); + factor = 1e9; + } + else if (UnitValue < 3.6e+15) { + unitString = QString::fromLatin1("kWh"); + factor = 3.6e+12; + } + else { // bigger than 1000 kWh -> scientific notation + unitString = QString::fromLatin1("J"); + factor = 1e6; + } } else if (unit == Unit::SpecificEnergy) { unitString = QString::fromLatin1("m^2/s^2"); diff --git a/src/Gui/DlgUnitsCalculator.ui b/src/Gui/DlgUnitsCalculator.ui index 2d74c12024..4a94166f85 100644 --- a/src/Gui/DlgUnitsCalculator.ui +++ b/src/Gui/DlgUnitsCalculator.ui @@ -6,14 +6,14 @@ 0 0 - 425 - 187 + 645 + 375 Units calculator - + @@ -89,42 +89,118 @@ To add a calculation press Return in the value input field - - - - - Quantity: - - - - - - - - 0 - 0 - - - - - - - - Units: - - - - - - - - 0 - 0 - - - - - + + + Quantity + + + + + + Quantity: + + + + + + + + 0 + 0 + + + + + + + + Scheme: + + + + + + + + Standard (mm/kg/s/degree) + + + + + MKS (m/kg/s/degree) + + + + + US customary (in/lb) + + + + + Imperial decimal (in/lb) + + + + + Building Euro (cm/m²/m³) + + + + + Building US (ft-in/sqft/cuft) + + + + + Metric small parts & CNC(mm, mm/min) + + + + + Imperial Civil (ft/ft^2/ft^3) + + + + + + + + Decimals: + + + + + + + 2 + + + 12 + + + 5 + + + + + + + Units: + + + + + + + + 0 + 0 + + + + + + diff --git a/src/Gui/DlgUnitsCalculatorImp.cpp b/src/Gui/DlgUnitsCalculatorImp.cpp index 6d28ced633..fc39350761 100644 --- a/src/Gui/DlgUnitsCalculatorImp.cpp +++ b/src/Gui/DlgUnitsCalculatorImp.cpp @@ -66,19 +66,45 @@ DlgUnitsCalculator::DlgUnitsCalculator( QWidget* parent, Qt::WindowFlags fl ) ui->ValueInput->setText(QString::fromLatin1("1 cm")); ui->UnitInput->setText(QString::fromLatin1("in")); - units << Base::Unit::Length << Base::Unit::Mass << Base::Unit::Angle << Base::Unit::Density - << Base::Unit::Area << Base::Unit::Volume << Base::Unit::TimeSpan << Base::Unit::Frequency - << Base::Unit::Velocity << Base::Unit::Acceleration << Base::Unit::Temperature - << Base::Unit::ElectricCurrent << Base::Unit::ElectricPotential - << Base::Unit::AmountOfSubstance << Base::Unit::LuminousIntensity << Base::Unit::Stress - << Base::Unit::Pressure << Base::Unit::Force << Base::Unit::Work << Base::Unit::Power - << Base::Unit::ThermalConductivity << Base::Unit::ThermalExpansionCoefficient - << Base::Unit::SpecificHeat << Base::Unit::ThermalTransferCoefficient << Base::Unit::HeatFlux; + units << Base::Unit::Acceleration + << Base::Unit::AmountOfSubstance + << Base::Unit::Angle + << Base::Unit::Area + << Base::Unit::Density + << Base::Unit::ElectricalCapacitance + << Base::Unit::ElectricalInductance + << Base::Unit::ElectricCharge + << Base::Unit::ElectricCurrent + << Base::Unit::ElectricPotential + << Base::Unit::Frequency + << Base::Unit::Force + << Base::Unit::HeatFlux + << Base::Unit::Length + << Base::Unit::LuminousIntensity + << Base::Unit::Mass + << Base::Unit::MagneticFluxDensity + << Base::Unit::Pressure + << Base::Unit::Power + << Base::Unit::SpecificHeat + << Base::Unit::Stress + << Base::Unit::Temperature + << Base::Unit::ThermalConductivity + << Base::Unit::ThermalExpansionCoefficient + << Base::Unit::ThermalTransferCoefficient + << Base::Unit::TimeSpan + << Base::Unit::Velocity + << Base::Unit::Volume + << Base::Unit::Work; for (QList::iterator it = units.begin(); it != units.end(); ++it) { ui->unitsBox->addItem(it->getTypeString()); } + ui->quantitySpinBox->setValue(1.0); ui->quantitySpinBox->setUnit(units.front()); + ui->spinBoxDecimals->setValue(Base::UnitsApi::getDecimals()); + + // see on_comboBoxScheme_activated + ui->comboBoxScheme->setDisabled(true); } /** Destroys the object and frees any allocated resources */ @@ -104,8 +130,11 @@ void DlgUnitsCalculator::textChanged(QString unit) void DlgUnitsCalculator::valueChanged(const Base::Quantity& quant) { - // first check the unit, if it is invalid, getTypeString() outputs an empty string - if (Base::Unit(ui->UnitInput->text()).getTypeString().isEmpty()) { + // first check the unit, if it is invalid, getTypeString() outputs an empty string + // explicitly check for "ee" like in "eeV" because this would trigger an exception in Base::Unit + // since it expects then a scientific notation number like "1e3" + if ( (ui->UnitInput->text().mid(0, 2) == QString::fromLatin1("ee")) || + Base::Unit(ui->UnitInput->text()).getTypeString().isEmpty()) { ui->ValueOutput->setText(tr("unknown unit: ") + ui->UnitInput->text()); ui->pushButton_Copy->setEnabled(false); } else { // the unit is valid @@ -158,7 +187,26 @@ void DlgUnitsCalculator::returnPressed(void) void DlgUnitsCalculator::on_unitsBox_activated(int index) { - ui->quantitySpinBox->setUnit(units[index]); + // SI units use [m], not [mm] for lengths + // + Base::Quantity q = ui->quantitySpinBox->value(); + int32_t old = q.getUnit().getSignature().Length; + double value = q.getValue(); + + Base::Unit unit = units[index]; + int32_t len = unit.getSignature().Length; + ui->quantitySpinBox->setValue(Base::Quantity(value * std::pow(10.0, 3*(len-old)), unit)); +} + +void DlgUnitsCalculator::on_comboBoxScheme_activated(int index) +{ + //TODO + Q_UNUSED(index) +} + +void DlgUnitsCalculator::on_spinBoxDecimals_valueChanged(int value) +{ + ui->quantitySpinBox->setDecimals(value); } #include "moc_DlgUnitsCalculatorImp.cpp" diff --git a/src/Gui/DlgUnitsCalculatorImp.h b/src/Gui/DlgUnitsCalculatorImp.h index 745b091399..00f0d2bfc0 100644 --- a/src/Gui/DlgUnitsCalculatorImp.h +++ b/src/Gui/DlgUnitsCalculatorImp.h @@ -53,6 +53,8 @@ protected Q_SLOTS: void textChanged(const QString); void valueChanged(const Base::Quantity&); void on_unitsBox_activated(int); + void on_comboBoxScheme_activated(int); + void on_spinBoxDecimals_valueChanged(int); void copy(void); void returnPressed(void); diff --git a/src/Gui/QuantitySpinBox.cpp b/src/Gui/QuantitySpinBox.cpp index 825d9d3fb0..4df87365cf 100644 --- a/src/Gui/QuantitySpinBox.cpp +++ b/src/Gui/QuantitySpinBox.cpp @@ -682,6 +682,21 @@ void QuantitySpinBox::setRange(double minimum, double maximum) d->maximum = maximum; } +int QuantitySpinBox::decimals() const +{ + Q_D(const QuantitySpinBox); + return d->quantity.getFormat().precision; +} + +void QuantitySpinBox::setDecimals(int v) +{ + Q_D(QuantitySpinBox); + Base::QuantityFormat f = d->quantity.getFormat(); + f.precision = v; + d->quantity.setFormat(f); + updateText(d->quantity); +} + QAbstractSpinBox::StepEnabled QuantitySpinBox::stepEnabled() const { Q_D(const QuantitySpinBox); diff --git a/src/Gui/QuantitySpinBox.h b/src/Gui/QuantitySpinBox.h index d57070919c..23714bfb99 100644 --- a/src/Gui/QuantitySpinBox.h +++ b/src/Gui/QuantitySpinBox.h @@ -91,6 +91,11 @@ public: /// Sets the value of the maximum property void setMaximum(double max); + /// Gets the number of decimals + int decimals() const; + /// Sets the number of decimals + void setDecimals(int v); + /// Gets the path of the bound property QString boundToName() const; /// Sets the path of the bound property diff --git a/src/Gui/TextDocumentEditorView.cpp b/src/Gui/TextDocumentEditorView.cpp index 4b48efee85..83eb39223f 100644 --- a/src/Gui/TextDocumentEditorView.cpp +++ b/src/Gui/TextDocumentEditorView.cpp @@ -73,7 +73,6 @@ void TextDocumentEditorView::setupEditor() { connect(getEditor()->document(), SIGNAL(modificationChanged(bool)), this, SLOT(setWindowModified(bool))); - getEditor()->setReadOnly(textDocument->ReadOnly.getValue()); setWindowTitle(QString::fromUtf8(textDocument->Label.getValue()) + QString::fromLatin1("[*]")); getEditor()->setPlainText( @@ -82,8 +81,10 @@ void TextDocumentEditorView::setupEditor() void TextDocumentEditorView::setupConnection() { - textConnection = textDocument->connect( + textConnection = textDocument->connectText( boost::bind(&TextDocumentEditorView::sourceChanged, this)); + labelConnection = textDocument->connectLabel( + boost::bind(&TextDocumentEditorView::labelChanged, this)); } void TextDocumentEditorView::sourceChanged() @@ -96,6 +97,12 @@ void TextDocumentEditorView::sourceChanged() } } +void TextDocumentEditorView::labelChanged() +{ + setWindowTitle(QString::fromUtf8(textDocument->Label.getValue()) + + QString::fromLatin1("[*]")); +} + void TextDocumentEditorView::refresh() { QString text = QString::fromUtf8( diff --git a/src/Gui/TextDocumentEditorView.h b/src/Gui/TextDocumentEditorView.h index d5e4022312..69a256d8c2 100644 --- a/src/Gui/TextDocumentEditorView.h +++ b/src/Gui/TextDocumentEditorView.h @@ -55,16 +55,21 @@ public: QPlainTextEdit* getEditor() const { return editor; } App::TextDocument* getTextObject() const { return textDocument; } + private: void setupEditor(); void setupConnection(); void saveToObject(); void sourceChanged(); + void labelChanged(); void refresh(); bool isEditorModified() const; + +private: QPlainTextEdit *const editor; App::TextDocument *const textDocument; boost::signals2::connection textConnection; + boost::signals2::connection labelConnection; bool sourceModified = false; }; diff --git a/src/Gui/ViewProviderTextDocument.cpp b/src/Gui/ViewProviderTextDocument.cpp index 19133c6507..5f28b16071 100644 --- a/src/Gui/ViewProviderTextDocument.cpp +++ b/src/Gui/ViewProviderTextDocument.cpp @@ -35,6 +35,7 @@ #include #include #include +#include #include "ViewProviderTextDocument.h" @@ -42,10 +43,32 @@ using namespace Gui; PROPERTY_SOURCE(Gui::ViewProviderTextDocument, Gui::ViewProviderDocumentObject) +const char* ViewProviderTextDocument::SyntaxEnums[]= {"None","Python",nullptr}; ViewProviderTextDocument::ViewProviderTextDocument() { sPixmap = "TextDocument"; + + ADD_PROPERTY_TYPE( + ReadOnly, (false), "Editor", App::Prop_None, + "Defines whether the content can be edited."); + + QFont font; + font.setFamily(QString::fromLatin1(App::GetApplication().GetUserParameter(). + GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("Editor")->GetASCII("Font", font.family().toLatin1()).c_str())); + font.setPointSize(App::GetApplication().GetUserParameter(). + GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("Editor")->GetInt("FontSize", font.pointSize())); + + ADD_PROPERTY_TYPE(FontSize,(font.pointSize()), "Editor", App::Prop_None, "Font size"); + ADD_PROPERTY_TYPE(FontName,((const char*)font.family().toLatin1()), "Editor", App::Prop_None, "Font name"); + + ADD_PROPERTY_TYPE(SyntaxHighlighter,(static_cast(0)), "Editor", App::Prop_None, "Syntax highlighting"); + SyntaxHighlighter.setEnums(SyntaxEnums); + + DisplayMode.setStatus(App::Property::Hidden, true); + OnTopWhenSelected.setStatus(App::Property::Hidden, true); + SelectionStyle.setStatus(App::Property::Hidden, true); + Visibility.setStatus(App::Property::Hidden, true); } void ViewProviderTextDocument::setupContextMenu(QMenu* menu, QObject* receiver, const char* member) @@ -60,7 +83,11 @@ void ViewProviderTextDocument::setupContextMenu(QMenu* menu, QObject* receiver, bool ViewProviderTextDocument::doubleClicked() { if (!activateView()) { - auto* editorWidget = new QPlainTextEdit {}; + editorWidget = new QPlainTextEdit {}; + editorWidget->setReadOnly(ReadOnly.getValue()); + FontName.touch(); + SyntaxHighlighter.touch(); + getMainWindow()->addWindow( new TextDocumentEditorView { static_cast(getObject()), @@ -69,6 +96,32 @@ bool ViewProviderTextDocument::doubleClicked() return true; } +void ViewProviderTextDocument::onChanged(const App::Property* prop) +{ + if (editorWidget) { + if (prop == &ReadOnly) { + editorWidget->setReadOnly(ReadOnly.getValue()); + } + else if (prop == &FontSize || prop == &FontName) { + QFont font(QString::fromLatin1(this->FontName.getValue()), (int)this->FontSize.getValue()); + editorWidget->setFont(font); + } + else if (prop == &SyntaxHighlighter) { + long value = SyntaxHighlighter.getValue(); + if (value == 1) { + PythonSyntaxHighlighter* pythonSyntax = new PythonSyntaxHighlighter(editorWidget); + pythonSyntax->setDocument(editorWidget->document()); + } + else { + QSyntaxHighlighter* shl = editorWidget->findChild(); + if (shl) + shl->deleteLater(); + } + } + } + ViewProviderDocumentObject::onChanged(prop); +} + bool ViewProviderTextDocument::activateView() const { auto views = getDocument()->getMDIViewsOfType( diff --git a/src/Gui/ViewProviderTextDocument.h b/src/Gui/ViewProviderTextDocument.h index 5073f4d379..c618933b79 100644 --- a/src/Gui/ViewProviderTextDocument.h +++ b/src/Gui/ViewProviderTextDocument.h @@ -25,9 +25,10 @@ #define GUI_ViewProviderTextDocument_H -#include "PreCompiled.h" #include "ViewProviderDocumentObject.h" +#include +class QPlainTextEdit; namespace Gui { @@ -37,11 +38,23 @@ public: ViewProviderTextDocument(); ~ViewProviderTextDocument() {} + App::PropertyBool ReadOnly; + App::PropertyFloat FontSize; + App::PropertyFont FontName; + App::PropertyEnumeration SyntaxHighlighter; + bool doubleClicked(); void setupContextMenu(QMenu* menu, QObject* receiver, const char* member); bool isShow() const { return true; } + + void onChanged(const App::Property* prop); + private: bool activateView() const; + +private: + QPointer editorWidget; + static const char* SyntaxEnums[]; }; } diff --git a/src/Mod/.gitattributes b/src/Mod/.gitattributes index c04a39b722..e045e76fac 100644 --- a/src/Mod/.gitattributes +++ b/src/Mod/.gitattributes @@ -1 +1,144 @@ JtReader export-ignore + + +# **************************************************************************** +# line endings + +# to surpress line ending changes in github, add ?w=1 at link end of a diff + +# for more information see forum topic and a specific pull request +# https://forum.freecadweb.org/viewtopic.php?f=17&t=41117 +# https://github.com/FreeCAD/FreeCAD/pull/2752 + + +# get all used file types + +# in a directory in a bash use +# find . -type f -name '*.*' | sed 's|.*\.||' | sort -u + +# in Mod directory for normalized modules +# find AddonManager Arch Complete Draft Idf Fem Material OpenSCAD Show Tux -type f -name '*.*' | sed 's|.*\.||' | sort -u + +# search for a specific file ending in normalized folders +# find AddonManager Arch Complete Draft Idf Fem Material OpenSCAD Show Tux -type f -name '*.emn' + + +# normalize the line endings of the following files + +# standard files +*.bat text +*.cpp text +*.csv text +*.dox text +*.h text +*.json text +*.md text +*.py text +*.qrc text +*.sh text +*.ts text +*.txt text +*.ui text +*.xml text +*.yml text + +# Fem specific files +*.dat text +*.frd text +*.geo text +*.inp text +*.sif text +*.unv text +*.vtk text +*.z88 text + +# files which are human readable +# but for which it is not sure if normalize is ok +# emn +# emp +# igs +# stp +# svg + +# binary files +# FCMat +# FCStd +# ods +# qm + + +# line endings of the modules commented will be normalized + +# AddonManager/** -text +# Arch/** -text +# Complete/** -text +# Draft/** -text +# Idf/** -text +# Fem/** -text +# Material/** -text +# OpenSCAD/** -text +# Show/** -text +# Tux/** -text + + +# line endings of the modules NOT commented will NOT be normalized +# Be carefully changes here could affect a lot of files automatically! + +Assembly/** -text +Cam/** -text +Cloud/** -text +Drawing/** -text +Image/** -text +Import/** -text +Inspection/** -text +JtReader/** -text +Measure/** -text +Mesh/** -text +MeshPart/** -text +Part/** -text +PartDesign/** -text +Path/** -text +Plot/** -text +Points/** -text +Raytracing/** -text +ReverseEngineering/** -text +Robot/** -text +Sandbox/** -text +Ship/** -text +Sketcher/** -text +Spreadsheet/** -text +Start/** -text +Surface/** -text +TechDraw/** -text +TemplatePyMod/** -text +Test/** -text +Web/** -text + + +# this would let git manage the file endings automatically +# to be save this will be commented +# * text=auto +# if used it has to be at beginning of all line ending commands in this file +# furthermore if used it is very important to set the file types +# which should not be normalized manually (like svg, jpg, etc) +# they should be set to binary + +# These files should be ignored as it pertains to line-endings +# because they are binary or should be treated as binary +# Since auto normalize is deactivated all these could be commented too. +# needed if * text=auto is used +# *.FCStd binary +# *.jpg binary +# *.png binary +# *.pyc binary +# *.qm binary +# *.svg binary + + +# These files will always be checked out with CRLF, i.e. windows-style line endings. This +# really should not be needed... +# *.SomeWindowsFileExtensionThatReallyRequiresCRLFEvenInLinux eol=crlf + + +# use git to manually correct the file endings +# git add --renormalize . diff --git a/src/Mod/Arch/Dice3DS/dice3ds.dox b/src/Mod/Arch/Dice3DS/dice3ds.dox index df8cc4ff3c..b825eaff50 100644 --- a/src/Mod/Arch/Dice3DS/dice3ds.dox +++ b/src/Mod/Arch/Dice3DS/dice3ds.dox @@ -1,5 +1,5 @@ -/** - \defgroup DICE3DS Dice 3DS - \ingroup EMBEDDED - \brief The Dice 3DS library provides 3DStudio files import to the Arch module - */ +/** + \defgroup DICE3DS Dice 3DS + \ingroup EMBEDDED + \brief The Dice 3DS library provides 3DStudio files import to the Arch module + */ diff --git a/src/Mod/Arch/Init.py b/src/Mod/Arch/Init.py index f139150f3e..e7c2c3d3a1 100644 --- a/src/Mod/Arch/Init.py +++ b/src/Mod/Arch/Init.py @@ -1,34 +1,34 @@ -#*************************************************************************** -#* * -#* Copyright (c) 2011 * -#* Yorik van Havre * -#* * -#* This program is free software; you can redistribute it and/or modify * -#* it under the terms of the GNU Lesser General Public License (LGPL) * -#* as published by the Free Software Foundation; either version 2 of * -#* the License, or (at your option) any later version. * -#* for detail see the LICENCE text file. * -#* * -#* This program 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 Library General Public License for more details. * -#* * -#* You should have received a copy of the GNU Library General Public * -#* License along with this program; if not, write to the Free Software * -#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * -#* USA * -#* * -#*************************************************************************** - -# add import/export types -FreeCAD.addImportType("Industry Foundation Classes (*.ifc)","importIFC") -FreeCAD.addExportType("Industry Foundation Classes (*.ifc)","exportIFC") -FreeCAD.addImportType("Wavefront OBJ - Arch module (*.obj)","importOBJ") -FreeCAD.addExportType("Wavefront OBJ - Arch module (*.obj)","importOBJ") -FreeCAD.addExportType("WebGL file (*.html)","importWebGL") -FreeCAD.addExportType("JavaScript Object Notation (*.json)","importJSON") -FreeCAD.addImportType("Collada (*.dae)","importDAE") -FreeCAD.addExportType("Collada (*.dae)","importDAE") -FreeCAD.addImportType("3D Studio mesh (*.3ds)","import3DS") -FreeCAD.addImportType("SweetHome3D XML export (*.zip)","importSH3D") +#*************************************************************************** +#* * +#* Copyright (c) 2011 * +#* Yorik van Havre * +#* * +#* This program is free software; you can redistribute it and/or modify * +#* it under the terms of the GNU Lesser General Public License (LGPL) * +#* as published by the Free Software Foundation; either version 2 of * +#* the License, or (at your option) any later version. * +#* for detail see the LICENCE text file. * +#* * +#* This program 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 Library General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#*************************************************************************** + +# add import/export types +FreeCAD.addImportType("Industry Foundation Classes (*.ifc)","importIFC") +FreeCAD.addExportType("Industry Foundation Classes (*.ifc)","exportIFC") +FreeCAD.addImportType("Wavefront OBJ - Arch module (*.obj)","importOBJ") +FreeCAD.addExportType("Wavefront OBJ - Arch module (*.obj)","importOBJ") +FreeCAD.addExportType("WebGL file (*.html)","importWebGL") +FreeCAD.addExportType("JavaScript Object Notation (*.json)","importJSON") +FreeCAD.addImportType("Collada (*.dae)","importDAE") +FreeCAD.addExportType("Collada (*.dae)","importDAE") +FreeCAD.addImportType("3D Studio mesh (*.3ds)","import3DS") +FreeCAD.addImportType("SweetHome3D XML export (*.zip)","importSH3D") diff --git a/src/Mod/Arch/Presets/profiles.csv b/src/Mod/Arch/Presets/profiles.csv index a287775c0d..fa1482272a 100644 --- a/src/Mod/Arch/Presets/profiles.csv +++ b/src/Mod/Arch/Presets/profiles.csv @@ -1,1053 +1,1053 @@ -# Data structure: - -# Category, Name, Profile class, geometric data... - -# All measures must be in millimeters - -# Possible profile classes are: - -# C= Circular tube -# H= H- or I-profile -# R= Rectangular -# RH= Rectangular hollow -# U= U-profile - -# Additional profile types must be implemented in ArchProfile.py first - -########################################### - -# Circular tube - -# Category,Name,C,Outside diameter,Thickness - -CTH,CTH423,C,42.4,3.2 - -# Circular Hollow Sections - -# Category,Name,C,Outside diameter,Thickness - -CHS,CHS21.3x2.6,C,21.3,2.6 -CHS,CHS21.3x2.9,C,21.3,2.9 -CHS,CHS21.3x3.2,C,21.3,3.2 -CHS,CHS26.9x2.6,C,26.9,2.6 -CHS,CHS26.9x2.9,C,26.9,2.9 -CHS,CHS26.9x3.2,C,26.9,3.2 -CHS,CHS26.9x3.6,C,26.9,3.6 -CHS,CHS33.7x2.6,C,33.7,2.6 -CHS,CHS33.7x2.9,C,33.7,2.9 -CHS,CHS33.7x3.2,C,33.7,3.2 -CHS,CHS33.7x3.6,C,33.7,3.6 -CHS,CHS33.7x4,C,33.7,4 -CHS,CHS33.7x4.5,C,33.7,4.5 -CHS,CHS42.4x2.6,C,42.4,2.6 -CHS,CHS42.4x2.9,C,42.4,2.9 -CHS,CHS42.4x3.2,C,42.4,3.2 -CHS,CHS42.4x3.6,C,42.4,3.6 -CHS,CHS42.4x4,C,42.4,4 -CHS,CHS42.4x4.5,C,42.4,4.5 -CHS,CHS48.3x2.6,C,48.3,2.6 -CHS,CHS48.3x2.9,C,48.3,2.9 -CHS,CHS48.3x3.2,C,48.3,3.2 -CHS,CHS48.3x3.6,C,48.3,3.6 -CHS,CHS48.3x4,C,48.3,4 -CHS,CHS48.3x4.5,C,48.3,4.5 -CHS,CHS48.3x5,C,48.3,5 -CHS,CHS48.3x5.6,C,48.3,5.6 -CHS,CHS48.3x6.3,C,48.3,6.3 -CHS,CHS60.3x2.6,C,60.3,2.6 -CHS,CHS60.3x2.9,C,60.3,2.9 -CHS,CHS60.3x3.2,C,60.3,3.2 -CHS,CHS60.3x3.6,C,60.3,3.6 -CHS,CHS60.3x4,C,60.3,4 -CHS,CHS60.3x4.5,C,60.3,4.5 -CHS,CHS60.3x5,C,60.3,5 -CHS,CHS60.3x5.6,C,60.3,5.6 -CHS,CHS60.3x6.3,C,60.3,6.3 -CHS,CHS60.3x7.1,C,60.3,7.1 -CHS,CHS60.3x8,C,60.3,8 -CHS,CHS76.1x2.9,C,76.1,2.9 -CHS,CHS76.1x3.2,C,76.1,3.2 -CHS,CHS76.1x3.6,C,76.1,3.6 -CHS,CHS76.1x4,C,76.1,4 -CHS,CHS76.1x4.5,C,76.1,4.5 -CHS,CHS76.1x5,C,76.1,5 -CHS,CHS76.1x5.6,C,76.1,5.6 -CHS,CHS76.1x6.3,C,76.1,6.3 -CHS,CHS76.1x7.1,C,76.1,7.1 -CHS,CHS76.1x8,C,76.1,8 -CHS,CHS88.9x3.2,C,88.9,3.2 -CHS,CHS88.9x3.6,C,88.9,3.6 -CHS,CHS88.9x4,C,88.9,4 -CHS,CHS88.9x4.5,C,88.9,4.5 -CHS,CHS88.9x5,C,88.9,5 -CHS,CHS88.9x5.6,C,88.9,5.6 -CHS,CHS88.9x6.3,C,88.9,6.3 -CHS,CHS88.9x7.1,C,88.9,7.1 -CHS,CHS88.9x8,C,88.9,8 -CHS,CHS88.9x10,C,88.9,10 -CHS,CHS101.6x3.6,C,101.6,3.6 -CHS,CHS101.6x4,C,101.6,4 -CHS,CHS101.6x4.5,C,101.6,4.5 -CHS,CHS101.6x5,C,101.6,5 -CHS,CHS101.6x5.6,C,101.6,5.6 -CHS,CHS101.6x6.3,C,101.6,6.3 -CHS,CHS101.6x7.1,C,101.6,7.1 -CHS,CHS101.6x8,C,101.6,8 -CHS,CHS101.6x10,C,101.6,10 -CHS,CHS114.3x3.6,C,114.3,3.6 -CHS,CHS114.3x4,C,114.3,4 -CHS,CHS114.3x4.5,C,114.3,4.5 -CHS,CHS114.3x5,C,114.3,5 -CHS,CHS114.3x5.6,C,114.3,5.6 -CHS,CHS114.3x6.3,C,114.3,6.3 -CHS,CHS114.3x7.1,C,114.3,7.1 -CHS,CHS114.3x8,C,114.3,8 -CHS,CHS114.3x10,C,114.3,10 -CHS,CHS139.7x3.6,C,139.7,3.6 -CHS,CHS139.7x4,C,139.7,4 -CHS,CHS139.7x4.5,C,139.7,4.5 -CHS,CHS139.7x5,C,139.7,5 -CHS,CHS139.7x5.6,C,139.7,5.6 -CHS,CHS139.7x6.3,C,139.7,6.3 -CHS,CHS139.7x7.1,C,139.7,7.1 -CHS,CHS139.7x8,C,139.7,8 -CHS,CHS139.7x10,C,139.7,10 -CHS,CHS168.3x5,C,168.3,5 -CHS,CHS168.3x5.6,C,168.3,5.6 -CHS,CHS168.3x6.3,C,168.3,6.3 -CHS,CHS168.3x7.1,C,168.3,7.1 -CHS,CHS168.3x8,C,168.3,8 -CHS,CHS168.3x10,C,168.3,10 -CHS,CHS168.3x11,C,168.3,11 -CHS,CHS168.3x12.5,C,168.3,12.5 -CHS,CHS193.7x5,C,193.7,5 -CHS,CHS193.7x5.6,C,193.7,5.6 -CHS,CHS193.7x6.3,C,193.7,6.3 -CHS,CHS193.7x7.1,C,193.7,7.1 -CHS,CHS193.7x8,C,193.7,8 -CHS,CHS193.7x10,C,193.7,10 -CHS,CHS193.7x11,C,193.7,11 -CHS,CHS193.7x12.5,C,193.7,12.5 -CHS,CHS193.7x14.2,C,193.7,14.2 -CHS,CHS193.7x16,C,193.7,16 -CHS,CHS219.1x4.5,C,219.1,4.5 -CHS,CHS219.1x5,C,219.1,5 -CHS,CHS219.1x5.6,C,219.1,5.6 -CHS,CHS219.1x6.3,C,219.1,6.3 -CHS,CHS219.1x7.1,C,219.1,7.1 -CHS,CHS219.1x8,C,219.1,8 -CHS,CHS219.1x10,C,219.1,10 -CHS,CHS219.1x11,C,219.1,11 -CHS,CHS219.1x12.5,C,219.1,12.5 -CHS,CHS219.1x14.2,C,219.1,14.2 -CHS,CHS219.1x16,C,219.1,16 -CHS,CHS244.5x5,C,244.5,5 -CHS,CHS244.5x5.6,C,244.5,5.6 -CHS,CHS244.5x6.3,C,244.5,6.3 -CHS,CHS244.5x7.1,C,244.5,7.1 -CHS,CHS244.5x8,C,244.5,8 -CHS,CHS244.5x10,C,244.5,10 -CHS,CHS244.5x11,C,244.5,11 -CHS,CHS244.5x12.5,C,244.5,12.5 -CHS,CHS244.5x14.2,C,244.5,14.2 -CHS,CHS244.5x16,C,244.5,16 -CHS,CHS273x5,C,273,5 -CHS,CHS273x5.6,C,273,5.6 -CHS,CHS273x6.3,C,273,6.3 -CHS,CHS273x7.1,C,273,7.1 -CHS,CHS273x8,C,273,8 -CHS,CHS273x10,C,273,10 -CHS,CHS273x11,C,273,11 -CHS,CHS273x12.5,C,273,12.5 -CHS,CHS273x14.2,C,273,14.2 -CHS,CHS273x16,C,273,16 -CHS,CHS323.9x5,C,323.9,5 -CHS,CHS323.9x5.6,C,323.9,5.6 -CHS,CHS323.9x6.3,C,323.9,6.3 -CHS,CHS323.9x7.1,C,323.9,7.1 -CHS,CHS323.9x8,C,323.9,8 -CHS,CHS323.9x10,C,323.9,10 -CHS,CHS323.9x11,C,323.9,11 -CHS,CHS323.9x12.5,C,323.9,12.5 -CHS,CHS323.9x14.2,C,323.9,14.2 -CHS,CHS323.9x16,C,323.9,16 -CHS,CHS355.6x6.3,C,355.6,6.3 -CHS,CHS355.6x7.1,C,355.6,7.1 -CHS,CHS355.6x8,C,355.6,8 -CHS,CHS355.6x10,C,355.6,10 -CHS,CHS355.6x11,C,355.6,11 -CHS,CHS355.6x12.5,C,355.6,12.5 -CHS,CHS355.6x14.2,C,355.6,14.2 -CHS,CHS355.6x16,C,355.6,16 -CHS,CHS406.4x10,C,406.4,10 -CHS,CHS406.4x11,C,406.4,11 -CHS,CHS406.4x12.5,C,406.4,12.5 -CHS,CHS406.4x14.2,C,406.4,14.2 -CHS,CHS406.4x16,C,406.4,16 -CHS,CHS457x10,C,457,10 -CHS,CHS457x11,C,457,11 -CHS,CHS457x12.5,C,457,12.5 -CHS,CHS457x14.2,C,457,14.2 -CHS,CHS457x16,C,457,16 -CHS,CHS508x10,C,508,10 -CHS,CHS508x11,C,508,11 -CHS,CHS508x12.5,C,508,12.5 -CHS,CHS508x14.2,C,508,14.2 -CHS,CHS508x16,C,508,16 - - -# H- or I-profile - -# Category,Name,H,width,height,web thickness,flange thickness - -# HEA profiles - -HEA,HEA100,H,100,96,5,8 -HEA,HEA120,H,120,114,5,8 -HEA,HEA140,H,140,133,5.5,8.5 -HEA,HEA160,H,160,152,6,9 -HEA,HEA180,H,180,171,6,9.5 -HEA,HEA200,H,200,190,6.5,10 -HEA,HEA220,H,220,210,7,11 -HEA,HEA240,H,240,230,7.5,12 -HEA,HEA260,H,260,250,7.5,12.5 -HEA,HEA280,H,280,270,8,13 -HEA,HEA300,H,300,290,8.5,14 -HEA,HEA320,H,300,310,9,15.5 -HEA,HEA340,H,300,330,9.5,16.5 -HEA,HEA360,H,300,350,10,17.5 -HEA,HEA400,H,300,390,11,19 -HEA,HEA450,H,300,440,11.5,21 -HEA,HEA500,H,300,490,12,23 -HEA,HEA550,H,300,540,12.5,24 -HEA,HEA600,H,300,590,13,25 -HEA,HEA650,H,300,640,13.5,26 -HEA,HEA700,H,300,690,14.5,27 -HEA,HEA800,H,300,790,15,28 -HEA,HEA900,H,300,890,16,30 -HEA,HEA1000,H,300,990,16.5,31 -HEA,HEAA100,H,100,91,4.2,5.5 -HEA,HEAA120,H,120,109,4.2,5.5 -HEA,HEAA140,H,140,128,4.3,6 -HEA,HEAA160,H,160,148,4.5,7 -HEA,HEAA180,H,180,167,5,7.5 -HEA,HEAA200,H,200,186,5.5,8 -HEA,HEAA220,H,220,205,6,8.5 -HEA,HEAA240,H,240,224,6.5,9 -HEA,HEAA260,H,260,244,6.5,9.5 -HEA,HEAA280,H,280,264,7,10 -HEA,HEAA300,H,300,283,7.5,10.5 -HEA,HEAA320,H,300,301,8,11 -HEA,HEAA340,H,300,320,8.5,11.5 -HEA,HEAA360,H,300,339,9,12 -HEA,HEAA400,H,300,378,9.5,13 -HEA,HEAA450,H,300,425,10,13.5 -HEA,HEAA500,H,300,472,10.5,14 -HEA,HEAA550,H,300,522,11.5,15 -HEA,HEAA600,H,300,571,12,15.5 -HEA,HEAA650,H,300,620,12.5,16 -HEA,HEAA700,H,300,670,13,17 -HEA,HEAA800,H,300,770,14,18 -HEA,HEAA900,H,300,870,15,20 -HEA,HEAA1000,H,300,970,16,21 - -# HEB profiles - -HEB,HEB100,H,100,100,6,10 -HEB,HEB120,H,120,120,6.5,11 -HEB,HEB140,H,140,140,7,12 -HEB,HEB160,H,160,160,8,13 -HEB,HEB180,H,180,180,8.5,14 -HEB,HEB200,H,200,200,9,15 -HEB,HEB220,H,220,220,9.5,16 -HEB,HEB240,H,240,240,10,17 -HEB,HEB260,H,260,260,10,17.5 -HEB,HEB280,H,280,280,10.5,18 -HEB,HEB300,H,300,300,11,19 -HEB,HEB320,H,300,320,11.5,20.5 -HEB,HEB340,H,300,340,12,21.5 -HEB,HEB360,H,300,360,12.5,22.5 -HEB,HEB400,H,300,400,13.5,24 -HEB,HEB450,H,300,450,14,26 -HEB,HEB500,H,300,500,14.5,28 -HEB,HEB550,H,300,550,15,29 -HEB,HEB600,H,300,600,15.5,30 -HEB,HEB650,H,300,650,16,31 -HEB,HEB700,H,300,700,17,32 -HEB,HEB800,H,300,800,17.5,33 -HEB,HEB900,H,300,900,18.5,35 -HEB,HEB1000,H,300,1000,19,36 - -# HEM profiles - -HEM,HEM160,H,166,180,14,23 -HEM,HEM180,H,186,200,14.5,24 -HEM,HEM200,H,206,220,15,25 -HEM,HEM220,H,226,240,15.5,26 -HEM,HEM240,H,248,270,18,32 -HEM,HEM260,H,268,290,18,32.5 -HEM,HEM280,H,288,310,18.5,33 -HEM,HEM300,H,310,340,21,39 -HEM,HEM320,H,309,359,21,40 -HEM,HEM340,H,309,377,21,40 -HEM,HEM360,H,308,395,21,40 -HEM,HEM400,H,307,432,21,40 -HEM,HEM450,H,307,478,21,40 -HEM,HEM500,H,306,524,21,40 -HEM,HEM550,H,306,572,21,40 -HEM,HEM600,H,305,620,21,40 -HEM,HEM650,H,305,668,21,40 -HEM,HEM700,H,304,716,21,40 -HEM,HEM800,H,303,814,21,40 -HEM,HEM900,H,302,910,21,40 -HEM,HEM1000,H,302,1008,21,40 - -# British Universal Column (UC) profiles - -UC,UC152x152x23,H,152.2,152.4,5.8,6.8 -UC,UC152x152x30,H,152.9,157.6,6.5,9.4 -UC,UC152x152x37,H,154.4,161.8,8,11.5 -UC,UC203x203x46,H,203.6,203.2,7.2,11 -UC,UC203x203x52,H,204.3,206.2,7.9,12.5 -UC,UC203x203x60,H,205.8,209.6,9.4,14.2 -UC,UC203x203x71,H,206.4,215.8,10,17.3 -UC,UC203x203x86,H,209.1,222.2,12.7,20.5 -UC,UC254x254x73,H,254.6,254.1,8.6,14.2 -UC,UC254x254x89,H,256.3,260.3,10.3,17.3 -UC,UC254x254x107,H,258.8,266.7,12.8,20.5 -UC,UC254x254x132,H,261.3,276.3,15.3,25.3 -UC,UC254x254x167,H,265.2,289.1,19.2,31.7 -UC,UC305x305x97,H,305.3,307.9,9.9,15.4 -UC,UC305x305x118,H,307.4,314.5,12,18.7 -UC,UC305x305x137,H,309.2,320.5,13.8,21.7 -UC,UC305x305x158,H,311.2,327.1,15.8,25 -UC,UC305x305x198,H,314.5,339.9,19.1,31.4 -UC,UC305x305x240,H,318.4,352.5,23,37.7 -UC,UC305x305x283,H,322.2,365.3,26.8,44.1 -UC,UC356x368x129,H,368.6,355.6,10.4,17.5 -UC,UC356x368x153,H,370.5,362,12.3,20.7 -UC,UC356x368x177,H,372.6,368.2,14.4,23.8 -UC,UC356x368x202,H,374.7,374.6,16.5,27 -UC,UC356x406x235,H,394.8,381,18.4,30.2 -UC,UC356x406x287,H,399,393.6,22.6,36.5 -UC,UC356x406x340,H,403,406.4,26.6,42.9 -UC,UC356x406x393,H,407,419,30.6,49.2 -UC,UC356x406x467,H,412.2,436.6,35.8,58 -UC,UC356x406x551,H,418.5,455.6,42.1,67.5 -UC,UC356x406x634,H,424,474.6,47.6,77 - - -# INP profiles - -INP,INP80,H,42,80,3.9,5.9 -INP,INP100,H,50,100,4.5,6.8 -INP,INP120,H,58,120,5.1,7.7 -INP,INP140,H,66,140,5.7,8.6 -INP,INP160,H,74,160,6.3,9.5 -INP,INP180,H,82,180,6.9,10.4 -INP,INP200,H,90,200,7.5,11.3 -INP,INP220,H,98,220,8.1,12.2 -INP,INP240,H,106,240,8.7,13.1 -INP,INP260,H,113,260,9.4,14.1 -INP,INP280,H,119,280,10.1,15.2 -INP,INP300,H,125,300,10.8,16.2 -INP,INP320,H,131,320,11.5,17.3 -INP,INP340,H,137,340,12.2,18.3 -INP,INP360,H,143,360,13,19.5 -INP,INP380,H,149,380,13.7,20.5 -INP,INP400,H,155,400,14.4,21.6 - -# IPE profiles - -IPE,IPE100,H,55,100,4.1,5.7 -IPE,IPE120,H,64,120,4.4,6.3 -IPE,IPE140,H,73,140,4.7,6.9 -IPE,IPE160,H,82,160,5,7.4 -IPE,IPE180,H,91,180,5.3,8 -IPE,IPE200,H,100,200,5.6,8.5 -IPE,IPE220,H,110,220,5.9,9.2 -IPE,IPE240,H,120,240,6.2,9.8 -IPE,IPE270,H,135,270,6.6,10.2 -IPE,IPE300,H,150,300,7.1,10.7 -IPE,IPE330,H,160,330,7.5,11.5 -IPE,IPE360,H,170,360,8,12.7 -IPE,IPE400,H,180,400,8.6,13.5 -IPE,IPE450,H,190,450,9.4,14.6 -IPE,IPE500,H,200,500,10.2,16 -IPE,IPE550,H,210,550,11.1,17.2 -IPE,IPE600,H,220,600,12,19 -IPE,IPEA100,H,55,98,3.6,4.7 -IPE,IPEA120,H,64,118,3.8,5.1 -IPE,IPEA140,H,73,138,3.8,5.6 -IPE,IPEA160,H,82,157,4,5.9 -IPE,IPEA180,H,91,177,4.3,6.5 -IPE,IPEA200,H,100,197,4.5,7 -IPE,IPEA220,H,110,217,5,7.7 -IPE,IPEA240,H,120,237,5.2,8.3 -IPE,IPEA270,H,135,267,5.5,8.7 -IPE,IPEA300,H,150,297,6.1,9.2 -IPE,IPEA330,H,160,327,6.5,10 -IPE,IPEA360,H,170,357.6,6.6,11.5 -IPE,IPEA400,H,180,397,7,12 -IPE,IPEA450,H,190,447,7.6,13.1 -IPE,IPEA500,H,200,497,8.4,14.5 -IPE,IPEA550,H,210,547,9,15.7 -IPE,IPEA600,H,220,597,9.8,17.5 -IPE,IPEO180,H,89,182,6.4,9.5 -IPE,IPEO200,H,102,202,6.2,9.5 -IPE,IPEO220,H,112,222,6.6,10.2 -IPE,IPEO240,H,122,242,7,10.8 -IPE,IPEO270,H,136,274,7.5,12.2 -IPE,IPEO300,H,152,304,8,12.7 -IPE,IPEO330,H,162,334,8.5,13.5 -IPE,IPEO360,H,172,364,9.2,14.7 -IPE,IPEO400,H,182,404,9.7,15.5 -IPE,IPEO450,H,192,456,11,17.6 -IPE,IPEO500,H,202,506,12,19 -IPE,IPEO550,H,212,556,12.7,20.2 -IPE,IPEO600,H,224,610,15,24 -IPE,IPER140,H,72,142,5.3,7.8 -IPE,IPER160,H,81,162,5.6,8.5 -IPE,IPER180,H,92,183,6,9 -IPE,IPER200,H,98,204,6.6,10.5 -IPE,IPER220,H,108,225,6.7,11.8 -IPE,IPER240,H,118,245,7.5,12.3 -IPE,IPER270,H,133,276,7.1,13.1 -IPE,IPER300,H,147,306,8.5,13.7 -IPE,IPER330,H,158,336,9.2,14.5 -IPE,IPER360,H,168,366,9.9,16 -IPE,IPER400,H,178,407,10.6,17 -IPE,IPER450,H,188,458,11.3,18.6 -IPE,IPER500,H,198,508,12.6,20 -IPE,IPER550,H,210,560,14,22.2 -IPE,IPER600,H,218,608,14,23 -IPE,IPEV400,H,182,408,10.6,17.5 -IPE,IPEV450,H,194,460,12.4,19.6 -IPE,IPEV500,H,204,514,14.2,23 -IPE,IPEV550,H,216,566,17.1,25.2 -IPE,IPEV600,H,228,618,18,28 -IPE,IPE750x137,H,263,753,11.5,17 -IPE,IPE750x147,H,265,753,13.2,17 -IPE,IPE750x161,H,266,758,13.8,19.3 -IPE,IPE750x173,H,267,762,14.4,21.6 -IPE,IPE750x185,H,267,766,14.9,23.6 -IPE,IPE750x196,H,268,770,15.6,25.4 -IPE,IPE750x210,H,268,775,16,28 -IPE,IPE750x222,H,269,778,17,29.5 - -# British Universal Beam (UB) profiles - -UB,UB127x76x13,H,76,127,4,7.6 -UB,UB152x89x16,H,88.7,152.4,4.5,7.7 -UB,UB178x102x19,H,101.2,177.8,4.8,7.9 -UB,UB203x102x23,H,101.8,203.2,5.4,9.3 -UB,UB203x133x25,H,133.2,203.2,5.7,7.8 -UB,UB203x133x30,H,133.9,206.8,6.4,9.6 -UB,UB254x102x22,H,101.6,254,5.7,6.8 -UB,UB254x102x25,H,101.9,257.2,6,8.4 -UB,UB254x102x28,H,102.2,260.4,6.3,10 -UB,UB254x146x31,H,146.1,251.4,6,8.6 -UB,UB254x146x37,H,146.4,256,6.3,10.9 -UB,UB254x146x43,H,147.3,259.6,7.2,12.7 -UB,UB305x102x25,H,101.6,305.1,5.8,7 -UB,UB305x102x28,H,101.8,308.7,6,8.8 -UB,UB305x102x33,H,102.4,312.7,6.6,10.8 -UB,UB305x127x37,H,123.4,304.4,7.1,10.7 -UB,UB305x127x42,H,124.3,307.2,8,12.1 -UB,UB305x127x48,H,125.3,311,9,14 -UB,UB305x165x40,H,165,303.4,6,10.2 -UB,UB305x165x46,H,165.7,306.6,6.7,11.8 -UB,UB305x165x54,H,166.9,310.4,7.9,13.7 -UB,UB356x127x33,H,125.4,349,6,8.5 -UB,UB356x127x39,H,126,353.4,6.6,10.7 -UB,UB356x171x45,H,171.1,351.4,7,9.7 -UB,UB356x171x51,H,171.5,355,7.4,11.5 -UB,UB356x171x57,H,172.2,358,8.1,13 -UB,UB356x171x67,H,173.2,363.4,9.1,15.7 -UB,UB406x140x39,H,141.8,398,6.4,8.6 -UB,UB406x140x46,H,142.2,403.2,6.8,11.2 -UB,UB406x178x54,H,177.7,402.6,7.7,10.9 -UB,UB406x178x60,H,177.9,406.4,7.9,12.8 -UB,UB406x178x67,H,178.8,409.4,8.8,14.3 -UB,UB406x178x74,H,179.5,412.8,9.5,16 -UB,UB457x152x52,H,152.4,449.8,7.6,10.9 -UB,UB457x152x60,H,152.9,454.6,8.1,13.3 -UB,UB457x152x67,H,153.8,458,9,15 -UB,UB457x152x74,H,154.4,462,9.6,17 -UB,UB457x152x82,H,155.3,465.8,10.5,18.9 -UB,UB457x191x67,H,189.9,453.4,8.5,12.7 -UB,UB457x191x74,H,190.4,457,9,14.5 -UB,UB457x191x82,H,191.3,460,9.9,16 -UB,UB457x191x89,H,191.9,463.4,10.5,17.7 -UB,UB457x191x98,H,192.8,467.2,11.4,19.6 -UB,UB533x210x82,H,208.8,528.3,9.6,13.2 -UB,UB533x210x92,H,209.3,533.1,10.1,15.6 -UB,UB533x210x101,H,210,536.7,10.8,17.4 -UB,UB533x210x109,H,210.8,539.5,11.6,18.8 -UB,UB533x210x122,H,211.9,544.5,12.7,21.3 -UB,UB610x229x101,H,227.6,602.6,10.5,14.8 -UB,UB610x229x113,H,228.2,607.6,11.1,17.3 -UB,UB610x229x125,H,229,612.2,11.9,19.6 -UB,UB610x229x140,H,230.2,617.2,13.1,22.1 -UB,UB610x305x149,H,304.8,612.4,11.8,19.7 -UB,UB610x305x179,H,307.1,620.2,14.1,23.6 -UB,UB610x305x238,H,311.4,635.8,18.4,31.4 -UB,UB686x254x125,H,253,677.9,11.7,16.2 -UB,UB686x254x140,H,253.7,683.5,12.4,19 -UB,UB686x254x152,H,254.5,687.5,13.2,21 -UB,UB686x254x170,H,255.8,692.9,14.5,23.7 -UB,UB762x267x134,H,264.4,750,12,15.5 -UB,UB762x267x147,H,265.2,754,12.8,17.5 -UB,UB762x267x173,H,266.7,762.2,14.3,21.6 -UB,UB762x267x197,H,268,769.8,15.6,25.4 -UB,UB838x292x176,H,291.7,834.9,14,18.8 -UB,UB838x292x194,H,292.4,840.7,14.7,21.7 -UB,UB838x292x226,H,293.8,850.9,16.1,26.8 -UB,UB914x305x201,H,303.3,903,15.1,20.2 -UB,UB914x305x224,H,304.1,910.4,15.9,23.9 -UB,UB914x305x253,H,305.5,918.4,17.3,27.9 -UB,UB914x305x289,H,307.7,926.6,19.5,32 -UB,UB914x419x343,H,418.5,911.8,19.4,32 -UB,UB914x419x388,H,420.5,921,21.4,36.6 -UB,UB1016x305x222,H,300,970.3,16,21.1 -UB,UB1016x305x249,H,300,980.2,16.5,26 -UB,UB1016x305x272,H,300,990.1,16.5,31 -UB,UB1016x305x314,H,300,1000,19.1,35.9 -UB,UB1016x305x349,H,302,1008.1,21.1,40 -UB,UB1016x305x393,H,303,1016,24.4,43.9 -UB,UB1016x305x437,H,305.4,1025.9,26.9,49 -UB,UB1016x305x487,H,308.5,1036.1,30,54.1 - - -# American Wide Flange W profiles - -American Wide Flange,W4x13,H,103.124,105.664,7.112,8.763 -American Wide Flange,W5x16,H,127,127.254,6.096,9.144 -American Wide Flange,W5x19,H,127.762,130.81,6.858,10.922 -American Wide Flange,W6x9,H,100.076,149.86,4.318,5.461 -American Wide Flange,W6x12,H,101.6,153.162,5.842,7.112 -American Wide Flange,W6x15,H,152.146,152.146,5.842,6.604 -American Wide Flange,W6x16,H,102.362,159.512,6.604,10.287 -American Wide Flange,W6x20,H,152.908,157.48,6.604,9.271 -American Wide Flange,W6x25,H,154.432,162.052,8.128,11.557 -American Wide Flange,W8x10,H,100.076,200.406,4.318,5.207 -American Wide Flange,W8x13,H,101.6,202.946,5.842,6.477 -American Wide Flange,W8x15,H,101.981,205.994,6.223,8.001 -American Wide Flange,W8x18,H,133.35,206.756,5.842,8.382 -American Wide Flange,W8x21,H,133.858,210.312,6.35,10.16 -American Wide Flange,W8x24,H,164.973,201.422,6.223,10.16 -American Wide Flange,W8x28,H,165.989,204.724,7.239,11.811 -American Wide Flange,W8x31,H,203.073,203.2,7.239,11.049 -American Wide Flange,W8x35,H,203.708,206.248,7.874,12.573 -American Wide Flange,W8x40,H,204.978,209.55,9.144,14.224 -American Wide Flange,W8x48,H,205.994,215.9,10.16,17.399 -American Wide Flange,W8x58,H,208.788,222.25,12.954,20.574 -American Wide Flange,W8x67,H,210.312,228.6,14.478,23.749 -American Wide Flange,W10x12,H,100.584,250.698,4.826,5.334 -American Wide Flange,W10x15,H,101.6,253.746,5.842,6.858 -American Wide Flange,W10x17,H,101.854,256.794,6.096,8.382 -American Wide Flange,W10x19,H,102.108,260.096,6.35,10.033 -American Wide Flange,W10x22,H,146.05,258.318,6.096,9.144 -American Wide Flange,W10x26,H,146.558,262.382,6.604,11.176 -American Wide Flange,W10x30,H,147.574,265.938,7.62,12.954 -American Wide Flange,W10x33,H,202.184,247.142,7.366,11.049 -American Wide Flange,W10x39,H,202.819,251.968,8.001,13.462 -American Wide Flange,W10x45,H,203.708,256.54,8.89,15.748 -American Wide Flange,W10x49,H,254,253.492,8.636,14.224 -American Wide Flange,W10x54,H,254.762,256.286,9.398,15.621 -American Wide Flange,W10x60,H,256.032,259.588,10.668,17.272 -American Wide Flange,W10x68,H,257.302,264.16,11.938,19.558 -American Wide Flange,W10x77,H,258.826,269.24,13.462,22.098 -American Wide Flange,W10x88,H,260.731,275.336,15.367,25.146 -American Wide Flange,W10x100,H,262.636,281.94,17.272,28.2448 -American Wide Flange,W10x112,H,264.541,288.544,19.177,31.75 -American Wide Flange,W12x14,H,100.838,302.514,5.08,5.715 -American Wide Flange,W12x16,H,101.346,304.546,5.588,6.731 -American Wide Flange,W12x19,H,101.727,308.864,5.969,8.89 -American Wide Flange,W12x22,H,102.362,312.674,6.604,10.795 -American Wide Flange,W12x26,H,164.846,310.388,5.842,9.652 -American Wide Flange,W12x30,H,165.608,313.436,6.604,11.176 -American Wide Flange,W12x35,H,166.624,317.5,7.62,13.208 -American Wide Flange,W12x40,H,203.327,303.276,7.493,13.081 -American Wide Flange,W12x45,H,204.343,306.324,8.509,14.605 -American Wide Flange,W12x50,H,205.232,309.626,9.398,16.256 -American Wide Flange,W12x53,H,253.873,306.324,8.763,14.605 -American Wide Flange,W12x58,H,254.254,309.626,9.144,16.256 -American Wide Flange,W12x65,H,304.8,307.848,9.906,15.367 -American Wide Flange,W12x72,H,305.816,311.15,10.922,17.018 -American Wide Flange,W12x79,H,306.832,314.452,11.938,18.669 -American Wide Flange,W12x87,H,307.975,318.262,13.081,20.574 -American Wide Flange,W12x96,H,308.864,322.834,13.97,22.86 -American Wide Flange,W12x106,H,310.388,327.406,15.494,25.146 -American Wide Flange,W12x120,H,312.928,333.248,18.034,28.067 -American Wide Flange,W12x136,H,314.96,340.614,20.066,31.75 -American Wide Flange,W14x22,H,127,348.996,5.842,8.509 -American Wide Flange,W14x26,H,127.635,353.314,6.477,10.668 -American Wide Flange,W14x30,H,170.942,351.536,6.858,9.779 -American Wide Flange,W14x34,H,171.323,355.092,7.239,11.557 -American Wide Flange,W14x38,H,171.958,358.14,7.874,13.081 -American Wide Flange,W14x43,H,203.073,346.964,7.747,13.462 -American Wide Flange,W14x48,H,203.962,350.266,8.636,15.113 -American Wide Flange,W14x53,H,204.724,353.568,9.398,16.764 -American Wide Flange,W14x61,H,253.873,352.806,9.525,16.383 -American Wide Flange,W14x68,H,254.889,356.616,10.541,18.288 -American Wide Flange,W14x74,H,255.778,359.918,11.43,19.939 -American Wide Flange,W14x82,H,257.302,363.474,12.954,21.717 -American Wide Flange,W14x90,H,368.808,356.108,11.176,18.034 -American Wide Flange,W14x99,H,369.951,359.664,12.319,19.812 -American Wide Flange,W14x109,H,370.967,363.728,13.335,21.844 -American Wide Flange,W14x120,H,372.618,367.792,14.986,23.876 -American Wide Flange,W14x132,H,374.015,372.364,16.383,26.162 -American Wide Flange,W16x26,H,139.7,398.526,6.35,8.763 -American Wide Flange,W16x31,H,140.335,403.352,6.985,11.176 -American Wide Flange,W16x36,H,177.419,402.844,7.493,10.922 -American Wide Flange,W16x40,H,177.673,406.654,7.747,12.827 -American Wide Flange,W16x45,H,178.689,409.702,8.763,14.351 -American Wide Flange,W16x50,H,179.578,413.004,9.652,16.002 -American Wide Flange,W16x57,H,180.848,417.322,10.922,18.161 -American Wide Flange,W16x67,H,259.969,414.782,10.033,16.891 -American Wide Flange,W16x77,H,261.493,419.608,11.557,19.304 -American Wide Flange,W16x89,H,263.271,425.45,13.335,22.225 -American Wide Flange,W16x100,H,264.795,431.038,14.859,25.019 -American Wide Flange,W18x35,H,152.4,449.58,7.62,10.795 -American Wide Flange,W18x40,H,152.908,454.66,8.001,13.335 -American Wide Flange,W18x46,H,153.924,459.74,9.144,15.367 -American Wide Flange,W18x50,H,190.5,457.2,9.017,14.478 -American Wide Flange,W18x55,H,191.262,459.74,9.906,16.002 -American Wide Flange,W18x60,H,192.024,462.28,10.541,17.653 -American Wide Flange,W18x65,H,192.786,467.36,11.43,19.05 -American Wide Flange,W18x71,H,194.056,469.9,12.573,20.574 -American Wide Flange,W18x76,H,280.416,462.28,10.795,17.272 -American Wide Flange,W18x86,H,281.686,467.36,12.192,19.558 -American Wide Flange,W18x97,H,283.21,472.44,13.589,22.098 -American Wide Flange,W18x106,H,284.48,474.98,14.986,23.876 -American Wide Flange,W18x119,H,286.258,482.6,16.637,26.924 -American Wide Flange,W21x44,H,165.1,525.78,8.89,11.43 -American Wide Flange,W21x50,H,165.862,528.32,9.652,13.589 -American Wide Flange,W21x57,H,166.624,535.94,10.287,16.51 -American Wide Flange,W21x62,H,209.296,533.4,10.16,15.621 -American Wide Flange,W21x68,H,210.058,535.94,10.922,17.399 -American Wide Flange,W21x73,H,210.82,538.48,11.557,18.796 -American Wide Flange,W21x83,H,212.344,543.56,13.081,21.209 -American Wide Flange,W21x93,H,213.868,548.64,14.732,23.622 -American Wide Flange,W21x101,H,312.166,543.56,12.7,20.32 -American Wide Flange,W21x111,H,313.436,546.1,13.97,22.225 -American Wide Flange,W21x122,H,314.706,551.18,15.24,24.384 -American Wide Flange,W21x132,H,315.976,553.72,16.51,26.289 -American Wide Flange,W21x147,H,317.754,561.34,18.288,29.21 -American Wide Flange,W24x55,H,178.054,599.44,10.033,12.827 -American Wide Flange,W24x62,H,178.816,601.98,10.922,14.986 -American Wide Flange,W24x68,H,227.838,601.98,10.541,14.859 -American Wide Flange,W24x76,H,228.6,607.06,11.176,17.272 -American Wide Flange,W24x84,H,229.108,612.14,11.938,19.558 -American Wide Flange,W24x94,H,230.378,612.14,13.081,22.225 -American Wide Flange,W24x104,H,323.85,612.14,12.7,19.05 -American Wide Flange,W24x117,H,325.12,617.22,13.97,21.59 -American Wide Flange,W24x131,H,327.66,622.3,15.367,24.384 -American Wide Flange,W24x146,H,327.66,627.38,16.51,27.686 -American Wide Flange,W24x162,H,330.2,635,17.907,30.988 -American Wide Flange,W27x84,H,252.984,678.18,11.684,16.256 -American Wide Flange,W27x94,H,254,683.26,12.446,18.923 -American Wide Flange,W27x102,H,254.508,688.34,13.081,21.082 -American Wide Flange,W27x114,H,255.778,693.42,14.478,23.622 -American Wide Flange,W27x146,H,355.6,695.96,15.367,24.765 -American Wide Flange,W27x161,H,356.108,701.04,16.764,27.432 -American Wide Flange,W27x178,H,357.886,706.12,18.415,30.226 - -# Rectangular - -# Category,Name,R,width,height - -North America Lumber,1x2in,R,19,28 -North America Lumber,1x3in,R,19,64 -North America Lumber,1x4in,R,19,89 -North America Lumber,1x6in,R,19,89 -North America Lumber,1x8in,R,19,140 -North America Lumber,1x10in,R,19,184 -North America Lumber,1x12in,R,19,286 -North America Lumber,2x2in,R,38,38 -North America Lumber,2x3in,R,38,64 -North America Lumber,2x4in,R,38,89 -North America Lumber,2x6in,R,38,140 -North America Lumber,2x8in,R,38,184 -North America Lumber,2x10in,R,38,235 -North America Lumber,2x12in,R,38,286 -North America Lumber,4x4in,R,89,89 -North America Lumber,4x6in,R,89,140 -North America Lumber,6x6in,R,140,140 -North America Lumber,8x8in,R,184,184 - -# Eurocode timber - -Eurocode timber,22x100 ,R,22,100 -Eurocode timber,38x100,R,38,100 -Eurocode timber,38x150,R,38,150 -Eurocode timber,38x175,R,38,175 -Eurocode timber,38x200,R,38,200 -Eurocode timber,38x225,R,38,225 -Eurocode timber,47x75,R,47,75 -Eurocode timber,47x100,R,47,100 -Eurocode timber,47x125,R,47,125 -Eurocode timber,47x150,R,47,150 -Eurocode timber,47x175,R,47,175 -Eurocode timber,47x200,R,47,200 -Eurocode timber,47x225,R,47,225 -Eurocode timber,47x250,R,47,250 -Eurocode timber,47x300,R,47,300 -Eurocode timber,63x150,R,63,150 -Eurocode timber,63x175,R,63,175 -Eurocode timber,63x200,R,63,200 -Eurocode timber,63x225,R,63,225 -Eurocode timber,75x100,R,75,100 -Eurocode timber,75x150,R,75,150 -Eurocode timber,75x175,R,75,175 -Eurocode timber,75x200,R,75,200 -Eurocode timber,75x225,R,75,225 -Eurocode timber,75x250,R,75,250 -Eurocode timber,75x300,R,75,300 -Eurocode timber,100x100,R,100,100 -Eurocode timber,100x150,R,100,150 -Eurocode timber,100x200,R,100,200 -Eurocode timber,100x225,R,100,225 -Eurocode timber,100x250,R,100,250 -Eurocode timber,100x300,R,100,300 -Eurocode timber,150x150,R,150,150 -Eurocode timber,150x300,R,150,300 -Eurocode timber,300x300,R,300,300 - -# Rectangular Hollow Section (RHS) profiles - -# Category,Name,RH,width,height,thickness - -RHS,RHS50x30,RH,50,30,2.9 -RHS,RHS50x30,RH,50,30,3.0 -RHS,RHS50x30,RH,50,30,3.2 -RHS,RHS50x30,RH,50,30,3.6 -RHS,RHS50x30,RH,50,30,4.0 -RHS,RHS50x30,RH,50,30,5.0 -RHS,RHS50x30,RH,50,30,5.6 -RHS,RHS50x30,RH,50,30,6.3 -RHS,RHS60x40,RH,60,40,2.9 -RHS,RHS60x40,RH,60,40,3.0 -RHS,RHS60x40,RH,60,40,3.2 -RHS,RHS60x40,RH,60,40,3.6 -RHS,RHS60x40,RH,60,40,4.0 -RHS,RHS60x40,RH,60,40,5.0 -RHS,RHS60x40,RH,60,40,5.6 -RHS,RHS60x40,RH,60,40,6.3 -RHS,RHS60x40,RH,60,40,7.1 -RHS,RHS60x40,RH,60,40,8.0 -RHS,RHS80x40,RH,80,40,2.9 -RHS,RHS80x40,RH,80,40,3.0 -RHS,RHS80x40,RH,80,40,3.2 -RHS,RHS80x40,RH,80,40,3.6 -RHS,RHS80x40,RH,80,40,4.0 -RHS,RHS80x40,RH,80,40,5.0 -RHS,RHS80x40,RH,80,40,5.6 -RHS,RHS80x40,RH,80,40,6.3 -RHS,RHS80x40,RH,80,40,7.1 -RHS,RHS80x40,RH,80,40,8.0 -RHS,RHS90x50,RH,90,50,3.0 -RHS,RHS90x50,RH,90,50,3.2 -RHS,RHS90x50,RH,90,50,3.6 -RHS,RHS90x50,RH,90,50,4.0 -RHS,RHS90x50,RH,90,50,5.0 -RHS,RHS90x50,RH,90,50,5.6 -RHS,RHS90x50,RH,90,50,6.3 -RHS,RHS90x50,RH,90,50,7.1 -RHS,RHS90x50,RH,90,50,8.0 -RHS,RHS90x50,RH,90,50,8.8 -RHS,RHS100x50,RH,100,50,3.2 -RHS,RHS100x50,RH,100,50,3.6 -RHS,RHS100x50,RH,100,50,4.0 -RHS,RHS100x50,RH,100,50,5.0 -RHS,RHS100x50,RH,100,50,5.6 -RHS,RHS100x50,RH,100,50,6.3 -RHS,RHS100x50,RH,100,50,7.1 -RHS,RHS100x50,RH,100,50,8.0 -RHS,RHS100x50,RH,100,50,8.8 -RHS,RHS100x50,RH,100,50,10.0 -RHS,RHS100x60,RH,100,60,3.2 -RHS,RHS100x60,RH,100,60,3.6 -RHS,RHS100x60,RH,100,60,4.0 -RHS,RHS100x60,RH,100,60,5.0 -RHS,RHS100x60,RH,100,60,5.6 -RHS,RHS100x60,RH,100,60,6.3 -RHS,RHS100x60,RH,100,60,7.1 -RHS,RHS100x60,RH,100,60,8.0 -RHS,RHS100x60,RH,100,60,8.8 -RHS,RHS100x60,RH,100,60,10.0 -RHS,RHS120x60,RH,120,60,3.6 -RHS,RHS120x60,RH,120,60,4.0 -RHS,RHS120x60,RH,120,60,5.0 -RHS,RHS120x60,RH,120,60,5.6 -RHS,RHS120x60,RH,120,60,6.3 -RHS,RHS120x60,RH,120,60,7.1 -RHS,RHS120x60,RH,120,60,8.0 -RHS,RHS120x60,RH,120,60,8.8 -RHS,RHS120x60,RH,120,60,10.0 -RHS,RHS120x80,RH,120,80,3.6 -RHS,RHS120x80,RH,120,80,4.0 -RHS,RHS120x80,RH,120,80,5.0 -RHS,RHS120x80,RH,120,80,5.6 -RHS,RHS120x80,RH,120,80,6.3 -RHS,RHS120x80,RH,120,80,7.1 -RHS,RHS120x80,RH,120,80,8.0 -RHS,RHS120x80,RH,120,80,8.8 -RHS,RHS120x80,RH,120,80,10.0 -RHS,RHS150x100,RH,150,100,4.0 -RHS,RHS150x100,RH,150,100,5.0 -RHS,RHS150x100,RH,150,100,5.6 -RHS,RHS150x100,RH,150,100,6.3 -RHS,RHS150x100,RH,150,100,7.1 -RHS,RHS150x100,RH,150,100,8.0 -RHS,RHS150x100,RH,150,100,8.8 -RHS,RHS150x100,RH,150,100,10.0 -RHS,RHS150x100,RH,150,100,11.0 -RHS,RHS150x100,RH,150,100,12.5 -RHS,RHS160x80,RH,160,80,4.0 -RHS,RHS160x80,RH,160,80,5.0 -RHS,RHS160x80,RH,160,80,5.6 -RHS,RHS160x80,RH,160,80,6.3 -RHS,RHS160x80,RH,160,80,7.1 -RHS,RHS160x80,RH,160,80,8.0 -RHS,RHS160x80,RH,160,80,8.8 -RHS,RHS160x80,RH,160,80,10.0 -RHS,RHS160x80,RH,160,80,11.0 -RHS,RHS160x80,RH,160,80,12.5 -RHS,RHS180x60,RH,180,60,4.0 -RHS,RHS180x60,RH,180,60,5.0 -RHS,RHS180x60,RH,180,60,5.6 -RHS,RHS180x60,RH,180,60,6.3 -RHS,RHS180x60,RH,180,60,7.1 -RHS,RHS180x60,RH,180,60,8.0 -RHS,RHS180x60,RH,180,60,8.8 -RHS,RHS180x60,RH,180,60,10.0 -RHS,RHS180x60,RH,180,60,11.0 -RHS,RHS180x60,RH,180,60,12.5 -RHS,RHS180x100,RH,180,100,4.0 -RHS,RHS180x100,RH,180,100,5.0 -RHS,RHS180x100,RH,180,100,5.6 -RHS,RHS180x100,RH,180,100,6.3 -RHS,RHS180x100,RH,180,100,7.1 -RHS,RHS180x100,RH,180,100,8.0 -RHS,RHS180x100,RH,180,100,8.8 -RHS,RHS180x100,RH,180,100,10.0 -RHS,RHS180x100,RH,180,100,11.0 -RHS,RHS180x100,RH,180,100,12.5 -RHS,RHS180x100,RH,180,100,14.2 -RHS,RHS200x100,RH,200,100,4.0 -RHS,RHS200x100,RH,200,100,5.0 -RHS,RHS200x100,RH,200,100,5.6 -RHS,RHS200x100,RH,200,100,6.3 -RHS,RHS200x100,RH,200,100,7.1 -RHS,RHS200x100,RH,200,100,8.0 -RHS,RHS200x100,RH,200,100,8.8 -RHS,RHS200x100,RH,200,100,10.0 -RHS,RHS200x100,RH,200,100,11.0 -RHS,RHS200x100,RH,200,100,12.5 -RHS,RHS200x100,RH,200,100,14.2 -RHS,RHS200x100,RH,200,100,16.0 -RHS,RHS200x120,RH,200,120,5.0 -RHS,RHS200x120,RH,200,120,5.6 -RHS,RHS200x120,RH,200,120,6.3 -RHS,RHS200x120,RH,200,120,7.1 -RHS,RHS200x120,RH,200,120,8.0 -RHS,RHS200x120,RH,200,120,8.8 -RHS,RHS200x120,RH,200,120,10.0 -RHS,RHS200x120,RH,200,120,11.0 -RHS,RHS200x120,RH,200,120,12.5 -RHS,RHS200x120,RH,200,120,14.2 -RHS,RHS200x120,RH,200,120,16.0 -RHS,RHS200x150,RH,200,150,5.0 -RHS,RHS200x150,RH,200,150,5.6 -RHS,RHS200x150,RH,200,150,6.3 -RHS,RHS200x150,RH,200,150,7.1 -RHS,RHS200x150,RH,200,150,8.0 -RHS,RHS200x150,RH,200,150,8.8 -RHS,RHS200x150,RH,200,150,10.0 -RHS,RHS200x150,RH,200,150,11.0 -RHS,RHS200x150,RH,200,150,12.5 -RHS,RHS200x150,RH,200,150,14.2 -RHS,RHS200x150,RH,200,150,16.0 -RHS,RHS220x120,RH,220,120,7.1 -RHS,RHS220x120,RH,220,120,8.0 -RHS,RHS220x120,RH,220,120,8.8 -RHS,RHS220x120,RH,220,120,10.0 -RHS,RHS220x120,RH,220,120,11.0 -RHS,RHS220x120,RH,220,120,12.5 -RHS,RHS220x120,RH,220,120,14.2 -RHS,RHS220x120,RH,220,120,16.0 -RHS,RHS250x100,RH,250,100,5.0 -RHS,RHS250x100,RH,250,100,5.6 -RHS,RHS250x100,RH,250,100,6.3 -RHS,RHS250x100,RH,250,100,7.1 -RHS,RHS250x100,RH,250,100,8.0 -RHS,RHS250x100,RH,250,100,8.8 -RHS,RHS250x100,RH,250,100,10.0 -RHS,RHS250x100,RH,250,100,11.0 -RHS,RHS250x100,RH,250,100,12.5 -RHS,RHS250x100,RH,250,100,14.2 -RHS,RHS250x100,RH,250,100,16.0 -RHS,RHS250x150,RH,250,150,5.0 -RHS,RHS250x150,RH,250,150,5.6 -RHS,RHS250x150,RH,250,150,6.3 -RHS,RHS250x150,RH,250,150,7.1 -RHS,RHS250x150,RH,250,150,8.0 -RHS,RHS250x150,RH,250,150,8.8 -RHS,RHS250x150,RH,250,150,10.0 -RHS,RHS250x150,RH,250,150,11.0 -RHS,RHS250x150,RH,250,150,12.5 -RHS,RHS250x150,RH,250,150,14.2 -RHS,RHS250x150,RH,250,150,16.0 -RHS,RHS260x140,RH,260,140,5.0 -RHS,RHS260x140,RH,260,140,5.6 -RHS,RHS260x140,RH,260,140,6.3 -RHS,RHS260x140,RH,260,140,7.1 -RHS,RHS260x140,RH,260,140,8.0 -RHS,RHS260x140,RH,260,140,8.8 -RHS,RHS260x140,RH,260,140,10.0 -RHS,RHS260x140,RH,260,140,11.0 -RHS,RHS260x140,RH,260,140,12.5 -RHS,RHS260x140,RH,260,140,14.2 -RHS,RHS260x140,RH,260,140,16.0 -RHS,RHS260x180,RH,260,180,8.0 -RHS,RHS260x180,RH,260,180,8.8 -RHS,RHS260x180,RH,260,180,10.0 -RHS,RHS260x180,RH,260,180,11.0 -RHS,RHS260x180,RH,260,180,12.5 -RHS,RHS260x180,RH,260,180,14.2 -RHS,RHS260x180,RH,260,180,16.0 -RHS,RHS300x100,RH,300,100,5.0 -RHS,RHS300x100,RH,300,100,5.6 -RHS,RHS300x100,RH,300,100,6.3 -RHS,RHS300x100,RH,300,100,7.1 -RHS,RHS300x100,RH,300,100,8.0 -RHS,RHS300x100,RH,300,100,8.8 -RHS,RHS300x100,RH,300,100,10.0 -RHS,RHS300x100,RH,300,100,11.0 -RHS,RHS300x100,RH,300,100,12.5 -RHS,RHS300x100,RH,300,100,14.2 -RHS,RHS300x100,RH,300,100,16.0 -RHS,RHS300x200,RH,300,200,5.0 -RHS,RHS300x200,RH,300,200,5.6 -RHS,RHS300x200,RH,300,200,6.3 -RHS,RHS300x200,RH,300,200,7.1 -RHS,RHS300x200,RH,300,200,8.0 -RHS,RHS300x200,RH,300,200,8.8 -RHS,RHS300x200,RH,300,200,10.0 -RHS,RHS300x200,RH,300,200,11.0 -RHS,RHS300x200,RH,300,200,12.5 -RHS,RHS300x200,RH,300,200,14.2 -RHS,RHS300x200,RH,300,200,16.0 -RHS,RHS300x250,RH,300,250,6.3 -RHS,RHS300x250,RH,300,250,7.1 -RHS,RHS300x250,RH,300,250,8.0 -RHS,RHS300x250,RH,300,250,8.8 -RHS,RHS300x250,RH,300,250,10.0 -RHS,RHS300x250,RH,300,250,11.0 -RHS,RHS300x250,RH,300,250,12.5 -RHS,RHS300x250,RH,300,250,14.2 -RHS,RHS300x250,RH,300,250,16.0 -RHS,RHS350x150,RH,350,150,5.0 -RHS,RHS350x150,RH,350,150,5.6 -RHS,RHS350x150,RH,350,150,6.3 -RHS,RHS350x150,RH,350,150,7.1 -RHS,RHS350x150,RH,350,150,8.0 -RHS,RHS350x150,RH,350,150,8.8 -RHS,RHS350x150,RH,350,150,10.0 -RHS,RHS350x150,RH,350,150,11.0 -RHS,RHS350x150,RH,350,150,12.5 -RHS,RHS350x150,RH,350,150,14.2 -RHS,RHS350x150,RH,350,150,16.0 -RHS,RHS350x200,RH,350,200,6.3 -RHS,RHS350x200,RH,350,200,7.1 -RHS,RHS350x200,RH,350,200,8.0 -RHS,RHS350x200,RH,350,200,8.8 -RHS,RHS350x200,RH,350,200,10.0 -RHS,RHS350x200,RH,350,200,11.0 -RHS,RHS350x200,RH,350,200,12.5 -RHS,RHS350x200,RH,350,200,14.2 -RHS,RHS350x200,RH,350,200,16.0 -RHS,RHS350x250,RH,350,250,6.3 -RHS,RHS350x250,RH,350,250,7.1 -RHS,RHS350x250,RH,350,250,8.0 -RHS,RHS350x250,RH,350,250,8.8 -RHS,RHS350x250,RH,350,250,10.0 -RHS,RHS350x250,RH,350,250,11.0 -RHS,RHS350x250,RH,350,250,12.5 -RHS,RHS350x250,RH,350,250,14.2 -RHS,RHS350x250,RH,350,250,16.0 -RHS,RHS400x150,RH,400,150,6.3 -RHS,RHS400x150,RH,400,150,7.1 -RHS,RHS400x150,RH,400,150,8.0 -RHS,RHS400x150,RH,400,150,8.8 -RHS,RHS400x150,RH,400,150,10.0 -RHS,RHS400x150,RH,400,150,11.0 -RHS,RHS400x150,RH,400,150,12.5 -RHS,RHS400x150,RH,400,150,14.2 -RHS,RHS400x150,RH,400,150,16.0 -RHS,RHS400x200,RH,400,200,6.3 -RHS,RHS400x200,RH,400,200,7.1 -RHS,RHS400x200,RH,400,200,8.0 -RHS,RHS400x200,RH,400,200,8.8 -RHS,RHS400x200,RH,400,200,10.0 -RHS,RHS400x200,RH,400,200,11.0 -RHS,RHS400x200,RH,400,200,12.5 -RHS,RHS400x200,RH,400,200,14.2 -RHS,RHS400x200,RH,400,200,16.0 -RHS,RHS400x300,RH,400,300,8.0 -RHS,RHS400x300,RH,400,300,8.8 -RHS,RHS400x300,RH,400,300,10.0 -RHS,RHS400x300,RH,400,300,11.0 -RHS,RHS400x300,RH,400,300,12.5 -RHS,RHS400x300,RH,400,300,14.2 -RHS,RHS400x300,RH,400,300,16.0 -RHS,RHS450x150,RH,450,150,8.0 -RHS,RHS450x150,RH,450,150,8.8 -RHS,RHS450x150,RH,450,150,10.0 -RHS,RHS450x150,RH,450,150,11.0 -RHS,RHS450x150,RH,450,150,12.5 -RHS,RHS450x150,RH,450,150,14.2 -RHS,RHS450x150,RH,450,150,16.0 -RHS,RHS450x250,RH,450,250,8.0 -RHS,RHS450x250,RH,450,250,8.8 -RHS,RHS450x250,RH,450,250,10.0 -RHS,RHS450x250,RH,450,250,11.0 -RHS,RHS450x250,RH,450,250,12.5 -RHS,RHS450x250,RH,450,250,14.2 -RHS,RHS450x250,RH,450,250,16.0 -RHS,RHS500x200,RH,500,200,8.0 -RHS,RHS500x200,RH,500,200,8.8 -RHS,RHS500x200,RH,500,200,10.0 -RHS,RHS500x200,RH,500,200,11.0 -RHS,RHS500x200,RH,500,200,12.5 -RHS,RHS500x200,RH,500,200,14.2 -RHS,RHS500x200,RH,500,200,16.0 -RHS,RHS500x300,RH,500,300,8.0 -RHS,RHS500x300,RH,500,300,8.8 -RHS,RHS500x300,RH,500,300,10.0 -RHS,RHS500x300,RH,500,300,11.0 -RHS,RHS500x300,RH,500,300,12.5 -RHS,RHS500x300,RH,500,300,14.2 -RHS,RHS500x300,RH,500,300,16.0 - - -# U-profile - -# Category,Name,U,width,height,web thickness,flange thickness - -UPE,UPE80,U,80,50,4,7 -UPE,UPE100,U,100,55,4.5,7.5 -UPE,UPE120,U,120,60,5,8 -UPE,UPE140,U,140,65,5,9 -UPE,UPE160,U,160,70,5.5,9.5 -UPE,UPE180,U,180,75,5.5,10.5 -UPE,UPE200,U,200,80,6,11 -UPE,UPE220,U,220,85,6.5,12 -UPE,UPE240,U,240,90,7,12.5 -UPE,UPE270,U,270,95,7.5,13.5 -UPE,UPE300,U,300,100,9.5,15 -UPE,UPE330,U,330,105,11,16 -UPE,UPE360,U,360,110,12,17 -UPE,UPE400,U,400,115,13.5,18 +# Data structure: + +# Category, Name, Profile class, geometric data... + +# All measures must be in millimeters + +# Possible profile classes are: + +# C= Circular tube +# H= H- or I-profile +# R= Rectangular +# RH= Rectangular hollow +# U= U-profile + +# Additional profile types must be implemented in ArchProfile.py first + +########################################### + +# Circular tube + +# Category,Name,C,Outside diameter,Thickness + +CTH,CTH423,C,42.4,3.2 + +# Circular Hollow Sections + +# Category,Name,C,Outside diameter,Thickness + +CHS,CHS21.3x2.6,C,21.3,2.6 +CHS,CHS21.3x2.9,C,21.3,2.9 +CHS,CHS21.3x3.2,C,21.3,3.2 +CHS,CHS26.9x2.6,C,26.9,2.6 +CHS,CHS26.9x2.9,C,26.9,2.9 +CHS,CHS26.9x3.2,C,26.9,3.2 +CHS,CHS26.9x3.6,C,26.9,3.6 +CHS,CHS33.7x2.6,C,33.7,2.6 +CHS,CHS33.7x2.9,C,33.7,2.9 +CHS,CHS33.7x3.2,C,33.7,3.2 +CHS,CHS33.7x3.6,C,33.7,3.6 +CHS,CHS33.7x4,C,33.7,4 +CHS,CHS33.7x4.5,C,33.7,4.5 +CHS,CHS42.4x2.6,C,42.4,2.6 +CHS,CHS42.4x2.9,C,42.4,2.9 +CHS,CHS42.4x3.2,C,42.4,3.2 +CHS,CHS42.4x3.6,C,42.4,3.6 +CHS,CHS42.4x4,C,42.4,4 +CHS,CHS42.4x4.5,C,42.4,4.5 +CHS,CHS48.3x2.6,C,48.3,2.6 +CHS,CHS48.3x2.9,C,48.3,2.9 +CHS,CHS48.3x3.2,C,48.3,3.2 +CHS,CHS48.3x3.6,C,48.3,3.6 +CHS,CHS48.3x4,C,48.3,4 +CHS,CHS48.3x4.5,C,48.3,4.5 +CHS,CHS48.3x5,C,48.3,5 +CHS,CHS48.3x5.6,C,48.3,5.6 +CHS,CHS48.3x6.3,C,48.3,6.3 +CHS,CHS60.3x2.6,C,60.3,2.6 +CHS,CHS60.3x2.9,C,60.3,2.9 +CHS,CHS60.3x3.2,C,60.3,3.2 +CHS,CHS60.3x3.6,C,60.3,3.6 +CHS,CHS60.3x4,C,60.3,4 +CHS,CHS60.3x4.5,C,60.3,4.5 +CHS,CHS60.3x5,C,60.3,5 +CHS,CHS60.3x5.6,C,60.3,5.6 +CHS,CHS60.3x6.3,C,60.3,6.3 +CHS,CHS60.3x7.1,C,60.3,7.1 +CHS,CHS60.3x8,C,60.3,8 +CHS,CHS76.1x2.9,C,76.1,2.9 +CHS,CHS76.1x3.2,C,76.1,3.2 +CHS,CHS76.1x3.6,C,76.1,3.6 +CHS,CHS76.1x4,C,76.1,4 +CHS,CHS76.1x4.5,C,76.1,4.5 +CHS,CHS76.1x5,C,76.1,5 +CHS,CHS76.1x5.6,C,76.1,5.6 +CHS,CHS76.1x6.3,C,76.1,6.3 +CHS,CHS76.1x7.1,C,76.1,7.1 +CHS,CHS76.1x8,C,76.1,8 +CHS,CHS88.9x3.2,C,88.9,3.2 +CHS,CHS88.9x3.6,C,88.9,3.6 +CHS,CHS88.9x4,C,88.9,4 +CHS,CHS88.9x4.5,C,88.9,4.5 +CHS,CHS88.9x5,C,88.9,5 +CHS,CHS88.9x5.6,C,88.9,5.6 +CHS,CHS88.9x6.3,C,88.9,6.3 +CHS,CHS88.9x7.1,C,88.9,7.1 +CHS,CHS88.9x8,C,88.9,8 +CHS,CHS88.9x10,C,88.9,10 +CHS,CHS101.6x3.6,C,101.6,3.6 +CHS,CHS101.6x4,C,101.6,4 +CHS,CHS101.6x4.5,C,101.6,4.5 +CHS,CHS101.6x5,C,101.6,5 +CHS,CHS101.6x5.6,C,101.6,5.6 +CHS,CHS101.6x6.3,C,101.6,6.3 +CHS,CHS101.6x7.1,C,101.6,7.1 +CHS,CHS101.6x8,C,101.6,8 +CHS,CHS101.6x10,C,101.6,10 +CHS,CHS114.3x3.6,C,114.3,3.6 +CHS,CHS114.3x4,C,114.3,4 +CHS,CHS114.3x4.5,C,114.3,4.5 +CHS,CHS114.3x5,C,114.3,5 +CHS,CHS114.3x5.6,C,114.3,5.6 +CHS,CHS114.3x6.3,C,114.3,6.3 +CHS,CHS114.3x7.1,C,114.3,7.1 +CHS,CHS114.3x8,C,114.3,8 +CHS,CHS114.3x10,C,114.3,10 +CHS,CHS139.7x3.6,C,139.7,3.6 +CHS,CHS139.7x4,C,139.7,4 +CHS,CHS139.7x4.5,C,139.7,4.5 +CHS,CHS139.7x5,C,139.7,5 +CHS,CHS139.7x5.6,C,139.7,5.6 +CHS,CHS139.7x6.3,C,139.7,6.3 +CHS,CHS139.7x7.1,C,139.7,7.1 +CHS,CHS139.7x8,C,139.7,8 +CHS,CHS139.7x10,C,139.7,10 +CHS,CHS168.3x5,C,168.3,5 +CHS,CHS168.3x5.6,C,168.3,5.6 +CHS,CHS168.3x6.3,C,168.3,6.3 +CHS,CHS168.3x7.1,C,168.3,7.1 +CHS,CHS168.3x8,C,168.3,8 +CHS,CHS168.3x10,C,168.3,10 +CHS,CHS168.3x11,C,168.3,11 +CHS,CHS168.3x12.5,C,168.3,12.5 +CHS,CHS193.7x5,C,193.7,5 +CHS,CHS193.7x5.6,C,193.7,5.6 +CHS,CHS193.7x6.3,C,193.7,6.3 +CHS,CHS193.7x7.1,C,193.7,7.1 +CHS,CHS193.7x8,C,193.7,8 +CHS,CHS193.7x10,C,193.7,10 +CHS,CHS193.7x11,C,193.7,11 +CHS,CHS193.7x12.5,C,193.7,12.5 +CHS,CHS193.7x14.2,C,193.7,14.2 +CHS,CHS193.7x16,C,193.7,16 +CHS,CHS219.1x4.5,C,219.1,4.5 +CHS,CHS219.1x5,C,219.1,5 +CHS,CHS219.1x5.6,C,219.1,5.6 +CHS,CHS219.1x6.3,C,219.1,6.3 +CHS,CHS219.1x7.1,C,219.1,7.1 +CHS,CHS219.1x8,C,219.1,8 +CHS,CHS219.1x10,C,219.1,10 +CHS,CHS219.1x11,C,219.1,11 +CHS,CHS219.1x12.5,C,219.1,12.5 +CHS,CHS219.1x14.2,C,219.1,14.2 +CHS,CHS219.1x16,C,219.1,16 +CHS,CHS244.5x5,C,244.5,5 +CHS,CHS244.5x5.6,C,244.5,5.6 +CHS,CHS244.5x6.3,C,244.5,6.3 +CHS,CHS244.5x7.1,C,244.5,7.1 +CHS,CHS244.5x8,C,244.5,8 +CHS,CHS244.5x10,C,244.5,10 +CHS,CHS244.5x11,C,244.5,11 +CHS,CHS244.5x12.5,C,244.5,12.5 +CHS,CHS244.5x14.2,C,244.5,14.2 +CHS,CHS244.5x16,C,244.5,16 +CHS,CHS273x5,C,273,5 +CHS,CHS273x5.6,C,273,5.6 +CHS,CHS273x6.3,C,273,6.3 +CHS,CHS273x7.1,C,273,7.1 +CHS,CHS273x8,C,273,8 +CHS,CHS273x10,C,273,10 +CHS,CHS273x11,C,273,11 +CHS,CHS273x12.5,C,273,12.5 +CHS,CHS273x14.2,C,273,14.2 +CHS,CHS273x16,C,273,16 +CHS,CHS323.9x5,C,323.9,5 +CHS,CHS323.9x5.6,C,323.9,5.6 +CHS,CHS323.9x6.3,C,323.9,6.3 +CHS,CHS323.9x7.1,C,323.9,7.1 +CHS,CHS323.9x8,C,323.9,8 +CHS,CHS323.9x10,C,323.9,10 +CHS,CHS323.9x11,C,323.9,11 +CHS,CHS323.9x12.5,C,323.9,12.5 +CHS,CHS323.9x14.2,C,323.9,14.2 +CHS,CHS323.9x16,C,323.9,16 +CHS,CHS355.6x6.3,C,355.6,6.3 +CHS,CHS355.6x7.1,C,355.6,7.1 +CHS,CHS355.6x8,C,355.6,8 +CHS,CHS355.6x10,C,355.6,10 +CHS,CHS355.6x11,C,355.6,11 +CHS,CHS355.6x12.5,C,355.6,12.5 +CHS,CHS355.6x14.2,C,355.6,14.2 +CHS,CHS355.6x16,C,355.6,16 +CHS,CHS406.4x10,C,406.4,10 +CHS,CHS406.4x11,C,406.4,11 +CHS,CHS406.4x12.5,C,406.4,12.5 +CHS,CHS406.4x14.2,C,406.4,14.2 +CHS,CHS406.4x16,C,406.4,16 +CHS,CHS457x10,C,457,10 +CHS,CHS457x11,C,457,11 +CHS,CHS457x12.5,C,457,12.5 +CHS,CHS457x14.2,C,457,14.2 +CHS,CHS457x16,C,457,16 +CHS,CHS508x10,C,508,10 +CHS,CHS508x11,C,508,11 +CHS,CHS508x12.5,C,508,12.5 +CHS,CHS508x14.2,C,508,14.2 +CHS,CHS508x16,C,508,16 + + +# H- or I-profile + +# Category,Name,H,width,height,web thickness,flange thickness + +# HEA profiles + +HEA,HEA100,H,100,96,5,8 +HEA,HEA120,H,120,114,5,8 +HEA,HEA140,H,140,133,5.5,8.5 +HEA,HEA160,H,160,152,6,9 +HEA,HEA180,H,180,171,6,9.5 +HEA,HEA200,H,200,190,6.5,10 +HEA,HEA220,H,220,210,7,11 +HEA,HEA240,H,240,230,7.5,12 +HEA,HEA260,H,260,250,7.5,12.5 +HEA,HEA280,H,280,270,8,13 +HEA,HEA300,H,300,290,8.5,14 +HEA,HEA320,H,300,310,9,15.5 +HEA,HEA340,H,300,330,9.5,16.5 +HEA,HEA360,H,300,350,10,17.5 +HEA,HEA400,H,300,390,11,19 +HEA,HEA450,H,300,440,11.5,21 +HEA,HEA500,H,300,490,12,23 +HEA,HEA550,H,300,540,12.5,24 +HEA,HEA600,H,300,590,13,25 +HEA,HEA650,H,300,640,13.5,26 +HEA,HEA700,H,300,690,14.5,27 +HEA,HEA800,H,300,790,15,28 +HEA,HEA900,H,300,890,16,30 +HEA,HEA1000,H,300,990,16.5,31 +HEA,HEAA100,H,100,91,4.2,5.5 +HEA,HEAA120,H,120,109,4.2,5.5 +HEA,HEAA140,H,140,128,4.3,6 +HEA,HEAA160,H,160,148,4.5,7 +HEA,HEAA180,H,180,167,5,7.5 +HEA,HEAA200,H,200,186,5.5,8 +HEA,HEAA220,H,220,205,6,8.5 +HEA,HEAA240,H,240,224,6.5,9 +HEA,HEAA260,H,260,244,6.5,9.5 +HEA,HEAA280,H,280,264,7,10 +HEA,HEAA300,H,300,283,7.5,10.5 +HEA,HEAA320,H,300,301,8,11 +HEA,HEAA340,H,300,320,8.5,11.5 +HEA,HEAA360,H,300,339,9,12 +HEA,HEAA400,H,300,378,9.5,13 +HEA,HEAA450,H,300,425,10,13.5 +HEA,HEAA500,H,300,472,10.5,14 +HEA,HEAA550,H,300,522,11.5,15 +HEA,HEAA600,H,300,571,12,15.5 +HEA,HEAA650,H,300,620,12.5,16 +HEA,HEAA700,H,300,670,13,17 +HEA,HEAA800,H,300,770,14,18 +HEA,HEAA900,H,300,870,15,20 +HEA,HEAA1000,H,300,970,16,21 + +# HEB profiles + +HEB,HEB100,H,100,100,6,10 +HEB,HEB120,H,120,120,6.5,11 +HEB,HEB140,H,140,140,7,12 +HEB,HEB160,H,160,160,8,13 +HEB,HEB180,H,180,180,8.5,14 +HEB,HEB200,H,200,200,9,15 +HEB,HEB220,H,220,220,9.5,16 +HEB,HEB240,H,240,240,10,17 +HEB,HEB260,H,260,260,10,17.5 +HEB,HEB280,H,280,280,10.5,18 +HEB,HEB300,H,300,300,11,19 +HEB,HEB320,H,300,320,11.5,20.5 +HEB,HEB340,H,300,340,12,21.5 +HEB,HEB360,H,300,360,12.5,22.5 +HEB,HEB400,H,300,400,13.5,24 +HEB,HEB450,H,300,450,14,26 +HEB,HEB500,H,300,500,14.5,28 +HEB,HEB550,H,300,550,15,29 +HEB,HEB600,H,300,600,15.5,30 +HEB,HEB650,H,300,650,16,31 +HEB,HEB700,H,300,700,17,32 +HEB,HEB800,H,300,800,17.5,33 +HEB,HEB900,H,300,900,18.5,35 +HEB,HEB1000,H,300,1000,19,36 + +# HEM profiles + +HEM,HEM160,H,166,180,14,23 +HEM,HEM180,H,186,200,14.5,24 +HEM,HEM200,H,206,220,15,25 +HEM,HEM220,H,226,240,15.5,26 +HEM,HEM240,H,248,270,18,32 +HEM,HEM260,H,268,290,18,32.5 +HEM,HEM280,H,288,310,18.5,33 +HEM,HEM300,H,310,340,21,39 +HEM,HEM320,H,309,359,21,40 +HEM,HEM340,H,309,377,21,40 +HEM,HEM360,H,308,395,21,40 +HEM,HEM400,H,307,432,21,40 +HEM,HEM450,H,307,478,21,40 +HEM,HEM500,H,306,524,21,40 +HEM,HEM550,H,306,572,21,40 +HEM,HEM600,H,305,620,21,40 +HEM,HEM650,H,305,668,21,40 +HEM,HEM700,H,304,716,21,40 +HEM,HEM800,H,303,814,21,40 +HEM,HEM900,H,302,910,21,40 +HEM,HEM1000,H,302,1008,21,40 + +# British Universal Column (UC) profiles + +UC,UC152x152x23,H,152.2,152.4,5.8,6.8 +UC,UC152x152x30,H,152.9,157.6,6.5,9.4 +UC,UC152x152x37,H,154.4,161.8,8,11.5 +UC,UC203x203x46,H,203.6,203.2,7.2,11 +UC,UC203x203x52,H,204.3,206.2,7.9,12.5 +UC,UC203x203x60,H,205.8,209.6,9.4,14.2 +UC,UC203x203x71,H,206.4,215.8,10,17.3 +UC,UC203x203x86,H,209.1,222.2,12.7,20.5 +UC,UC254x254x73,H,254.6,254.1,8.6,14.2 +UC,UC254x254x89,H,256.3,260.3,10.3,17.3 +UC,UC254x254x107,H,258.8,266.7,12.8,20.5 +UC,UC254x254x132,H,261.3,276.3,15.3,25.3 +UC,UC254x254x167,H,265.2,289.1,19.2,31.7 +UC,UC305x305x97,H,305.3,307.9,9.9,15.4 +UC,UC305x305x118,H,307.4,314.5,12,18.7 +UC,UC305x305x137,H,309.2,320.5,13.8,21.7 +UC,UC305x305x158,H,311.2,327.1,15.8,25 +UC,UC305x305x198,H,314.5,339.9,19.1,31.4 +UC,UC305x305x240,H,318.4,352.5,23,37.7 +UC,UC305x305x283,H,322.2,365.3,26.8,44.1 +UC,UC356x368x129,H,368.6,355.6,10.4,17.5 +UC,UC356x368x153,H,370.5,362,12.3,20.7 +UC,UC356x368x177,H,372.6,368.2,14.4,23.8 +UC,UC356x368x202,H,374.7,374.6,16.5,27 +UC,UC356x406x235,H,394.8,381,18.4,30.2 +UC,UC356x406x287,H,399,393.6,22.6,36.5 +UC,UC356x406x340,H,403,406.4,26.6,42.9 +UC,UC356x406x393,H,407,419,30.6,49.2 +UC,UC356x406x467,H,412.2,436.6,35.8,58 +UC,UC356x406x551,H,418.5,455.6,42.1,67.5 +UC,UC356x406x634,H,424,474.6,47.6,77 + + +# INP profiles + +INP,INP80,H,42,80,3.9,5.9 +INP,INP100,H,50,100,4.5,6.8 +INP,INP120,H,58,120,5.1,7.7 +INP,INP140,H,66,140,5.7,8.6 +INP,INP160,H,74,160,6.3,9.5 +INP,INP180,H,82,180,6.9,10.4 +INP,INP200,H,90,200,7.5,11.3 +INP,INP220,H,98,220,8.1,12.2 +INP,INP240,H,106,240,8.7,13.1 +INP,INP260,H,113,260,9.4,14.1 +INP,INP280,H,119,280,10.1,15.2 +INP,INP300,H,125,300,10.8,16.2 +INP,INP320,H,131,320,11.5,17.3 +INP,INP340,H,137,340,12.2,18.3 +INP,INP360,H,143,360,13,19.5 +INP,INP380,H,149,380,13.7,20.5 +INP,INP400,H,155,400,14.4,21.6 + +# IPE profiles + +IPE,IPE100,H,55,100,4.1,5.7 +IPE,IPE120,H,64,120,4.4,6.3 +IPE,IPE140,H,73,140,4.7,6.9 +IPE,IPE160,H,82,160,5,7.4 +IPE,IPE180,H,91,180,5.3,8 +IPE,IPE200,H,100,200,5.6,8.5 +IPE,IPE220,H,110,220,5.9,9.2 +IPE,IPE240,H,120,240,6.2,9.8 +IPE,IPE270,H,135,270,6.6,10.2 +IPE,IPE300,H,150,300,7.1,10.7 +IPE,IPE330,H,160,330,7.5,11.5 +IPE,IPE360,H,170,360,8,12.7 +IPE,IPE400,H,180,400,8.6,13.5 +IPE,IPE450,H,190,450,9.4,14.6 +IPE,IPE500,H,200,500,10.2,16 +IPE,IPE550,H,210,550,11.1,17.2 +IPE,IPE600,H,220,600,12,19 +IPE,IPEA100,H,55,98,3.6,4.7 +IPE,IPEA120,H,64,118,3.8,5.1 +IPE,IPEA140,H,73,138,3.8,5.6 +IPE,IPEA160,H,82,157,4,5.9 +IPE,IPEA180,H,91,177,4.3,6.5 +IPE,IPEA200,H,100,197,4.5,7 +IPE,IPEA220,H,110,217,5,7.7 +IPE,IPEA240,H,120,237,5.2,8.3 +IPE,IPEA270,H,135,267,5.5,8.7 +IPE,IPEA300,H,150,297,6.1,9.2 +IPE,IPEA330,H,160,327,6.5,10 +IPE,IPEA360,H,170,357.6,6.6,11.5 +IPE,IPEA400,H,180,397,7,12 +IPE,IPEA450,H,190,447,7.6,13.1 +IPE,IPEA500,H,200,497,8.4,14.5 +IPE,IPEA550,H,210,547,9,15.7 +IPE,IPEA600,H,220,597,9.8,17.5 +IPE,IPEO180,H,89,182,6.4,9.5 +IPE,IPEO200,H,102,202,6.2,9.5 +IPE,IPEO220,H,112,222,6.6,10.2 +IPE,IPEO240,H,122,242,7,10.8 +IPE,IPEO270,H,136,274,7.5,12.2 +IPE,IPEO300,H,152,304,8,12.7 +IPE,IPEO330,H,162,334,8.5,13.5 +IPE,IPEO360,H,172,364,9.2,14.7 +IPE,IPEO400,H,182,404,9.7,15.5 +IPE,IPEO450,H,192,456,11,17.6 +IPE,IPEO500,H,202,506,12,19 +IPE,IPEO550,H,212,556,12.7,20.2 +IPE,IPEO600,H,224,610,15,24 +IPE,IPER140,H,72,142,5.3,7.8 +IPE,IPER160,H,81,162,5.6,8.5 +IPE,IPER180,H,92,183,6,9 +IPE,IPER200,H,98,204,6.6,10.5 +IPE,IPER220,H,108,225,6.7,11.8 +IPE,IPER240,H,118,245,7.5,12.3 +IPE,IPER270,H,133,276,7.1,13.1 +IPE,IPER300,H,147,306,8.5,13.7 +IPE,IPER330,H,158,336,9.2,14.5 +IPE,IPER360,H,168,366,9.9,16 +IPE,IPER400,H,178,407,10.6,17 +IPE,IPER450,H,188,458,11.3,18.6 +IPE,IPER500,H,198,508,12.6,20 +IPE,IPER550,H,210,560,14,22.2 +IPE,IPER600,H,218,608,14,23 +IPE,IPEV400,H,182,408,10.6,17.5 +IPE,IPEV450,H,194,460,12.4,19.6 +IPE,IPEV500,H,204,514,14.2,23 +IPE,IPEV550,H,216,566,17.1,25.2 +IPE,IPEV600,H,228,618,18,28 +IPE,IPE750x137,H,263,753,11.5,17 +IPE,IPE750x147,H,265,753,13.2,17 +IPE,IPE750x161,H,266,758,13.8,19.3 +IPE,IPE750x173,H,267,762,14.4,21.6 +IPE,IPE750x185,H,267,766,14.9,23.6 +IPE,IPE750x196,H,268,770,15.6,25.4 +IPE,IPE750x210,H,268,775,16,28 +IPE,IPE750x222,H,269,778,17,29.5 + +# British Universal Beam (UB) profiles + +UB,UB127x76x13,H,76,127,4,7.6 +UB,UB152x89x16,H,88.7,152.4,4.5,7.7 +UB,UB178x102x19,H,101.2,177.8,4.8,7.9 +UB,UB203x102x23,H,101.8,203.2,5.4,9.3 +UB,UB203x133x25,H,133.2,203.2,5.7,7.8 +UB,UB203x133x30,H,133.9,206.8,6.4,9.6 +UB,UB254x102x22,H,101.6,254,5.7,6.8 +UB,UB254x102x25,H,101.9,257.2,6,8.4 +UB,UB254x102x28,H,102.2,260.4,6.3,10 +UB,UB254x146x31,H,146.1,251.4,6,8.6 +UB,UB254x146x37,H,146.4,256,6.3,10.9 +UB,UB254x146x43,H,147.3,259.6,7.2,12.7 +UB,UB305x102x25,H,101.6,305.1,5.8,7 +UB,UB305x102x28,H,101.8,308.7,6,8.8 +UB,UB305x102x33,H,102.4,312.7,6.6,10.8 +UB,UB305x127x37,H,123.4,304.4,7.1,10.7 +UB,UB305x127x42,H,124.3,307.2,8,12.1 +UB,UB305x127x48,H,125.3,311,9,14 +UB,UB305x165x40,H,165,303.4,6,10.2 +UB,UB305x165x46,H,165.7,306.6,6.7,11.8 +UB,UB305x165x54,H,166.9,310.4,7.9,13.7 +UB,UB356x127x33,H,125.4,349,6,8.5 +UB,UB356x127x39,H,126,353.4,6.6,10.7 +UB,UB356x171x45,H,171.1,351.4,7,9.7 +UB,UB356x171x51,H,171.5,355,7.4,11.5 +UB,UB356x171x57,H,172.2,358,8.1,13 +UB,UB356x171x67,H,173.2,363.4,9.1,15.7 +UB,UB406x140x39,H,141.8,398,6.4,8.6 +UB,UB406x140x46,H,142.2,403.2,6.8,11.2 +UB,UB406x178x54,H,177.7,402.6,7.7,10.9 +UB,UB406x178x60,H,177.9,406.4,7.9,12.8 +UB,UB406x178x67,H,178.8,409.4,8.8,14.3 +UB,UB406x178x74,H,179.5,412.8,9.5,16 +UB,UB457x152x52,H,152.4,449.8,7.6,10.9 +UB,UB457x152x60,H,152.9,454.6,8.1,13.3 +UB,UB457x152x67,H,153.8,458,9,15 +UB,UB457x152x74,H,154.4,462,9.6,17 +UB,UB457x152x82,H,155.3,465.8,10.5,18.9 +UB,UB457x191x67,H,189.9,453.4,8.5,12.7 +UB,UB457x191x74,H,190.4,457,9,14.5 +UB,UB457x191x82,H,191.3,460,9.9,16 +UB,UB457x191x89,H,191.9,463.4,10.5,17.7 +UB,UB457x191x98,H,192.8,467.2,11.4,19.6 +UB,UB533x210x82,H,208.8,528.3,9.6,13.2 +UB,UB533x210x92,H,209.3,533.1,10.1,15.6 +UB,UB533x210x101,H,210,536.7,10.8,17.4 +UB,UB533x210x109,H,210.8,539.5,11.6,18.8 +UB,UB533x210x122,H,211.9,544.5,12.7,21.3 +UB,UB610x229x101,H,227.6,602.6,10.5,14.8 +UB,UB610x229x113,H,228.2,607.6,11.1,17.3 +UB,UB610x229x125,H,229,612.2,11.9,19.6 +UB,UB610x229x140,H,230.2,617.2,13.1,22.1 +UB,UB610x305x149,H,304.8,612.4,11.8,19.7 +UB,UB610x305x179,H,307.1,620.2,14.1,23.6 +UB,UB610x305x238,H,311.4,635.8,18.4,31.4 +UB,UB686x254x125,H,253,677.9,11.7,16.2 +UB,UB686x254x140,H,253.7,683.5,12.4,19 +UB,UB686x254x152,H,254.5,687.5,13.2,21 +UB,UB686x254x170,H,255.8,692.9,14.5,23.7 +UB,UB762x267x134,H,264.4,750,12,15.5 +UB,UB762x267x147,H,265.2,754,12.8,17.5 +UB,UB762x267x173,H,266.7,762.2,14.3,21.6 +UB,UB762x267x197,H,268,769.8,15.6,25.4 +UB,UB838x292x176,H,291.7,834.9,14,18.8 +UB,UB838x292x194,H,292.4,840.7,14.7,21.7 +UB,UB838x292x226,H,293.8,850.9,16.1,26.8 +UB,UB914x305x201,H,303.3,903,15.1,20.2 +UB,UB914x305x224,H,304.1,910.4,15.9,23.9 +UB,UB914x305x253,H,305.5,918.4,17.3,27.9 +UB,UB914x305x289,H,307.7,926.6,19.5,32 +UB,UB914x419x343,H,418.5,911.8,19.4,32 +UB,UB914x419x388,H,420.5,921,21.4,36.6 +UB,UB1016x305x222,H,300,970.3,16,21.1 +UB,UB1016x305x249,H,300,980.2,16.5,26 +UB,UB1016x305x272,H,300,990.1,16.5,31 +UB,UB1016x305x314,H,300,1000,19.1,35.9 +UB,UB1016x305x349,H,302,1008.1,21.1,40 +UB,UB1016x305x393,H,303,1016,24.4,43.9 +UB,UB1016x305x437,H,305.4,1025.9,26.9,49 +UB,UB1016x305x487,H,308.5,1036.1,30,54.1 + + +# American Wide Flange W profiles + +American Wide Flange,W4x13,H,103.124,105.664,7.112,8.763 +American Wide Flange,W5x16,H,127,127.254,6.096,9.144 +American Wide Flange,W5x19,H,127.762,130.81,6.858,10.922 +American Wide Flange,W6x9,H,100.076,149.86,4.318,5.461 +American Wide Flange,W6x12,H,101.6,153.162,5.842,7.112 +American Wide Flange,W6x15,H,152.146,152.146,5.842,6.604 +American Wide Flange,W6x16,H,102.362,159.512,6.604,10.287 +American Wide Flange,W6x20,H,152.908,157.48,6.604,9.271 +American Wide Flange,W6x25,H,154.432,162.052,8.128,11.557 +American Wide Flange,W8x10,H,100.076,200.406,4.318,5.207 +American Wide Flange,W8x13,H,101.6,202.946,5.842,6.477 +American Wide Flange,W8x15,H,101.981,205.994,6.223,8.001 +American Wide Flange,W8x18,H,133.35,206.756,5.842,8.382 +American Wide Flange,W8x21,H,133.858,210.312,6.35,10.16 +American Wide Flange,W8x24,H,164.973,201.422,6.223,10.16 +American Wide Flange,W8x28,H,165.989,204.724,7.239,11.811 +American Wide Flange,W8x31,H,203.073,203.2,7.239,11.049 +American Wide Flange,W8x35,H,203.708,206.248,7.874,12.573 +American Wide Flange,W8x40,H,204.978,209.55,9.144,14.224 +American Wide Flange,W8x48,H,205.994,215.9,10.16,17.399 +American Wide Flange,W8x58,H,208.788,222.25,12.954,20.574 +American Wide Flange,W8x67,H,210.312,228.6,14.478,23.749 +American Wide Flange,W10x12,H,100.584,250.698,4.826,5.334 +American Wide Flange,W10x15,H,101.6,253.746,5.842,6.858 +American Wide Flange,W10x17,H,101.854,256.794,6.096,8.382 +American Wide Flange,W10x19,H,102.108,260.096,6.35,10.033 +American Wide Flange,W10x22,H,146.05,258.318,6.096,9.144 +American Wide Flange,W10x26,H,146.558,262.382,6.604,11.176 +American Wide Flange,W10x30,H,147.574,265.938,7.62,12.954 +American Wide Flange,W10x33,H,202.184,247.142,7.366,11.049 +American Wide Flange,W10x39,H,202.819,251.968,8.001,13.462 +American Wide Flange,W10x45,H,203.708,256.54,8.89,15.748 +American Wide Flange,W10x49,H,254,253.492,8.636,14.224 +American Wide Flange,W10x54,H,254.762,256.286,9.398,15.621 +American Wide Flange,W10x60,H,256.032,259.588,10.668,17.272 +American Wide Flange,W10x68,H,257.302,264.16,11.938,19.558 +American Wide Flange,W10x77,H,258.826,269.24,13.462,22.098 +American Wide Flange,W10x88,H,260.731,275.336,15.367,25.146 +American Wide Flange,W10x100,H,262.636,281.94,17.272,28.2448 +American Wide Flange,W10x112,H,264.541,288.544,19.177,31.75 +American Wide Flange,W12x14,H,100.838,302.514,5.08,5.715 +American Wide Flange,W12x16,H,101.346,304.546,5.588,6.731 +American Wide Flange,W12x19,H,101.727,308.864,5.969,8.89 +American Wide Flange,W12x22,H,102.362,312.674,6.604,10.795 +American Wide Flange,W12x26,H,164.846,310.388,5.842,9.652 +American Wide Flange,W12x30,H,165.608,313.436,6.604,11.176 +American Wide Flange,W12x35,H,166.624,317.5,7.62,13.208 +American Wide Flange,W12x40,H,203.327,303.276,7.493,13.081 +American Wide Flange,W12x45,H,204.343,306.324,8.509,14.605 +American Wide Flange,W12x50,H,205.232,309.626,9.398,16.256 +American Wide Flange,W12x53,H,253.873,306.324,8.763,14.605 +American Wide Flange,W12x58,H,254.254,309.626,9.144,16.256 +American Wide Flange,W12x65,H,304.8,307.848,9.906,15.367 +American Wide Flange,W12x72,H,305.816,311.15,10.922,17.018 +American Wide Flange,W12x79,H,306.832,314.452,11.938,18.669 +American Wide Flange,W12x87,H,307.975,318.262,13.081,20.574 +American Wide Flange,W12x96,H,308.864,322.834,13.97,22.86 +American Wide Flange,W12x106,H,310.388,327.406,15.494,25.146 +American Wide Flange,W12x120,H,312.928,333.248,18.034,28.067 +American Wide Flange,W12x136,H,314.96,340.614,20.066,31.75 +American Wide Flange,W14x22,H,127,348.996,5.842,8.509 +American Wide Flange,W14x26,H,127.635,353.314,6.477,10.668 +American Wide Flange,W14x30,H,170.942,351.536,6.858,9.779 +American Wide Flange,W14x34,H,171.323,355.092,7.239,11.557 +American Wide Flange,W14x38,H,171.958,358.14,7.874,13.081 +American Wide Flange,W14x43,H,203.073,346.964,7.747,13.462 +American Wide Flange,W14x48,H,203.962,350.266,8.636,15.113 +American Wide Flange,W14x53,H,204.724,353.568,9.398,16.764 +American Wide Flange,W14x61,H,253.873,352.806,9.525,16.383 +American Wide Flange,W14x68,H,254.889,356.616,10.541,18.288 +American Wide Flange,W14x74,H,255.778,359.918,11.43,19.939 +American Wide Flange,W14x82,H,257.302,363.474,12.954,21.717 +American Wide Flange,W14x90,H,368.808,356.108,11.176,18.034 +American Wide Flange,W14x99,H,369.951,359.664,12.319,19.812 +American Wide Flange,W14x109,H,370.967,363.728,13.335,21.844 +American Wide Flange,W14x120,H,372.618,367.792,14.986,23.876 +American Wide Flange,W14x132,H,374.015,372.364,16.383,26.162 +American Wide Flange,W16x26,H,139.7,398.526,6.35,8.763 +American Wide Flange,W16x31,H,140.335,403.352,6.985,11.176 +American Wide Flange,W16x36,H,177.419,402.844,7.493,10.922 +American Wide Flange,W16x40,H,177.673,406.654,7.747,12.827 +American Wide Flange,W16x45,H,178.689,409.702,8.763,14.351 +American Wide Flange,W16x50,H,179.578,413.004,9.652,16.002 +American Wide Flange,W16x57,H,180.848,417.322,10.922,18.161 +American Wide Flange,W16x67,H,259.969,414.782,10.033,16.891 +American Wide Flange,W16x77,H,261.493,419.608,11.557,19.304 +American Wide Flange,W16x89,H,263.271,425.45,13.335,22.225 +American Wide Flange,W16x100,H,264.795,431.038,14.859,25.019 +American Wide Flange,W18x35,H,152.4,449.58,7.62,10.795 +American Wide Flange,W18x40,H,152.908,454.66,8.001,13.335 +American Wide Flange,W18x46,H,153.924,459.74,9.144,15.367 +American Wide Flange,W18x50,H,190.5,457.2,9.017,14.478 +American Wide Flange,W18x55,H,191.262,459.74,9.906,16.002 +American Wide Flange,W18x60,H,192.024,462.28,10.541,17.653 +American Wide Flange,W18x65,H,192.786,467.36,11.43,19.05 +American Wide Flange,W18x71,H,194.056,469.9,12.573,20.574 +American Wide Flange,W18x76,H,280.416,462.28,10.795,17.272 +American Wide Flange,W18x86,H,281.686,467.36,12.192,19.558 +American Wide Flange,W18x97,H,283.21,472.44,13.589,22.098 +American Wide Flange,W18x106,H,284.48,474.98,14.986,23.876 +American Wide Flange,W18x119,H,286.258,482.6,16.637,26.924 +American Wide Flange,W21x44,H,165.1,525.78,8.89,11.43 +American Wide Flange,W21x50,H,165.862,528.32,9.652,13.589 +American Wide Flange,W21x57,H,166.624,535.94,10.287,16.51 +American Wide Flange,W21x62,H,209.296,533.4,10.16,15.621 +American Wide Flange,W21x68,H,210.058,535.94,10.922,17.399 +American Wide Flange,W21x73,H,210.82,538.48,11.557,18.796 +American Wide Flange,W21x83,H,212.344,543.56,13.081,21.209 +American Wide Flange,W21x93,H,213.868,548.64,14.732,23.622 +American Wide Flange,W21x101,H,312.166,543.56,12.7,20.32 +American Wide Flange,W21x111,H,313.436,546.1,13.97,22.225 +American Wide Flange,W21x122,H,314.706,551.18,15.24,24.384 +American Wide Flange,W21x132,H,315.976,553.72,16.51,26.289 +American Wide Flange,W21x147,H,317.754,561.34,18.288,29.21 +American Wide Flange,W24x55,H,178.054,599.44,10.033,12.827 +American Wide Flange,W24x62,H,178.816,601.98,10.922,14.986 +American Wide Flange,W24x68,H,227.838,601.98,10.541,14.859 +American Wide Flange,W24x76,H,228.6,607.06,11.176,17.272 +American Wide Flange,W24x84,H,229.108,612.14,11.938,19.558 +American Wide Flange,W24x94,H,230.378,612.14,13.081,22.225 +American Wide Flange,W24x104,H,323.85,612.14,12.7,19.05 +American Wide Flange,W24x117,H,325.12,617.22,13.97,21.59 +American Wide Flange,W24x131,H,327.66,622.3,15.367,24.384 +American Wide Flange,W24x146,H,327.66,627.38,16.51,27.686 +American Wide Flange,W24x162,H,330.2,635,17.907,30.988 +American Wide Flange,W27x84,H,252.984,678.18,11.684,16.256 +American Wide Flange,W27x94,H,254,683.26,12.446,18.923 +American Wide Flange,W27x102,H,254.508,688.34,13.081,21.082 +American Wide Flange,W27x114,H,255.778,693.42,14.478,23.622 +American Wide Flange,W27x146,H,355.6,695.96,15.367,24.765 +American Wide Flange,W27x161,H,356.108,701.04,16.764,27.432 +American Wide Flange,W27x178,H,357.886,706.12,18.415,30.226 + +# Rectangular + +# Category,Name,R,width,height + +North America Lumber,1x2in,R,19,28 +North America Lumber,1x3in,R,19,64 +North America Lumber,1x4in,R,19,89 +North America Lumber,1x6in,R,19,89 +North America Lumber,1x8in,R,19,140 +North America Lumber,1x10in,R,19,184 +North America Lumber,1x12in,R,19,286 +North America Lumber,2x2in,R,38,38 +North America Lumber,2x3in,R,38,64 +North America Lumber,2x4in,R,38,89 +North America Lumber,2x6in,R,38,140 +North America Lumber,2x8in,R,38,184 +North America Lumber,2x10in,R,38,235 +North America Lumber,2x12in,R,38,286 +North America Lumber,4x4in,R,89,89 +North America Lumber,4x6in,R,89,140 +North America Lumber,6x6in,R,140,140 +North America Lumber,8x8in,R,184,184 + +# Eurocode timber + +Eurocode timber,22x100 ,R,22,100 +Eurocode timber,38x100,R,38,100 +Eurocode timber,38x150,R,38,150 +Eurocode timber,38x175,R,38,175 +Eurocode timber,38x200,R,38,200 +Eurocode timber,38x225,R,38,225 +Eurocode timber,47x75,R,47,75 +Eurocode timber,47x100,R,47,100 +Eurocode timber,47x125,R,47,125 +Eurocode timber,47x150,R,47,150 +Eurocode timber,47x175,R,47,175 +Eurocode timber,47x200,R,47,200 +Eurocode timber,47x225,R,47,225 +Eurocode timber,47x250,R,47,250 +Eurocode timber,47x300,R,47,300 +Eurocode timber,63x150,R,63,150 +Eurocode timber,63x175,R,63,175 +Eurocode timber,63x200,R,63,200 +Eurocode timber,63x225,R,63,225 +Eurocode timber,75x100,R,75,100 +Eurocode timber,75x150,R,75,150 +Eurocode timber,75x175,R,75,175 +Eurocode timber,75x200,R,75,200 +Eurocode timber,75x225,R,75,225 +Eurocode timber,75x250,R,75,250 +Eurocode timber,75x300,R,75,300 +Eurocode timber,100x100,R,100,100 +Eurocode timber,100x150,R,100,150 +Eurocode timber,100x200,R,100,200 +Eurocode timber,100x225,R,100,225 +Eurocode timber,100x250,R,100,250 +Eurocode timber,100x300,R,100,300 +Eurocode timber,150x150,R,150,150 +Eurocode timber,150x300,R,150,300 +Eurocode timber,300x300,R,300,300 + +# Rectangular Hollow Section (RHS) profiles + +# Category,Name,RH,width,height,thickness + +RHS,RHS50x30,RH,50,30,2.9 +RHS,RHS50x30,RH,50,30,3.0 +RHS,RHS50x30,RH,50,30,3.2 +RHS,RHS50x30,RH,50,30,3.6 +RHS,RHS50x30,RH,50,30,4.0 +RHS,RHS50x30,RH,50,30,5.0 +RHS,RHS50x30,RH,50,30,5.6 +RHS,RHS50x30,RH,50,30,6.3 +RHS,RHS60x40,RH,60,40,2.9 +RHS,RHS60x40,RH,60,40,3.0 +RHS,RHS60x40,RH,60,40,3.2 +RHS,RHS60x40,RH,60,40,3.6 +RHS,RHS60x40,RH,60,40,4.0 +RHS,RHS60x40,RH,60,40,5.0 +RHS,RHS60x40,RH,60,40,5.6 +RHS,RHS60x40,RH,60,40,6.3 +RHS,RHS60x40,RH,60,40,7.1 +RHS,RHS60x40,RH,60,40,8.0 +RHS,RHS80x40,RH,80,40,2.9 +RHS,RHS80x40,RH,80,40,3.0 +RHS,RHS80x40,RH,80,40,3.2 +RHS,RHS80x40,RH,80,40,3.6 +RHS,RHS80x40,RH,80,40,4.0 +RHS,RHS80x40,RH,80,40,5.0 +RHS,RHS80x40,RH,80,40,5.6 +RHS,RHS80x40,RH,80,40,6.3 +RHS,RHS80x40,RH,80,40,7.1 +RHS,RHS80x40,RH,80,40,8.0 +RHS,RHS90x50,RH,90,50,3.0 +RHS,RHS90x50,RH,90,50,3.2 +RHS,RHS90x50,RH,90,50,3.6 +RHS,RHS90x50,RH,90,50,4.0 +RHS,RHS90x50,RH,90,50,5.0 +RHS,RHS90x50,RH,90,50,5.6 +RHS,RHS90x50,RH,90,50,6.3 +RHS,RHS90x50,RH,90,50,7.1 +RHS,RHS90x50,RH,90,50,8.0 +RHS,RHS90x50,RH,90,50,8.8 +RHS,RHS100x50,RH,100,50,3.2 +RHS,RHS100x50,RH,100,50,3.6 +RHS,RHS100x50,RH,100,50,4.0 +RHS,RHS100x50,RH,100,50,5.0 +RHS,RHS100x50,RH,100,50,5.6 +RHS,RHS100x50,RH,100,50,6.3 +RHS,RHS100x50,RH,100,50,7.1 +RHS,RHS100x50,RH,100,50,8.0 +RHS,RHS100x50,RH,100,50,8.8 +RHS,RHS100x50,RH,100,50,10.0 +RHS,RHS100x60,RH,100,60,3.2 +RHS,RHS100x60,RH,100,60,3.6 +RHS,RHS100x60,RH,100,60,4.0 +RHS,RHS100x60,RH,100,60,5.0 +RHS,RHS100x60,RH,100,60,5.6 +RHS,RHS100x60,RH,100,60,6.3 +RHS,RHS100x60,RH,100,60,7.1 +RHS,RHS100x60,RH,100,60,8.0 +RHS,RHS100x60,RH,100,60,8.8 +RHS,RHS100x60,RH,100,60,10.0 +RHS,RHS120x60,RH,120,60,3.6 +RHS,RHS120x60,RH,120,60,4.0 +RHS,RHS120x60,RH,120,60,5.0 +RHS,RHS120x60,RH,120,60,5.6 +RHS,RHS120x60,RH,120,60,6.3 +RHS,RHS120x60,RH,120,60,7.1 +RHS,RHS120x60,RH,120,60,8.0 +RHS,RHS120x60,RH,120,60,8.8 +RHS,RHS120x60,RH,120,60,10.0 +RHS,RHS120x80,RH,120,80,3.6 +RHS,RHS120x80,RH,120,80,4.0 +RHS,RHS120x80,RH,120,80,5.0 +RHS,RHS120x80,RH,120,80,5.6 +RHS,RHS120x80,RH,120,80,6.3 +RHS,RHS120x80,RH,120,80,7.1 +RHS,RHS120x80,RH,120,80,8.0 +RHS,RHS120x80,RH,120,80,8.8 +RHS,RHS120x80,RH,120,80,10.0 +RHS,RHS150x100,RH,150,100,4.0 +RHS,RHS150x100,RH,150,100,5.0 +RHS,RHS150x100,RH,150,100,5.6 +RHS,RHS150x100,RH,150,100,6.3 +RHS,RHS150x100,RH,150,100,7.1 +RHS,RHS150x100,RH,150,100,8.0 +RHS,RHS150x100,RH,150,100,8.8 +RHS,RHS150x100,RH,150,100,10.0 +RHS,RHS150x100,RH,150,100,11.0 +RHS,RHS150x100,RH,150,100,12.5 +RHS,RHS160x80,RH,160,80,4.0 +RHS,RHS160x80,RH,160,80,5.0 +RHS,RHS160x80,RH,160,80,5.6 +RHS,RHS160x80,RH,160,80,6.3 +RHS,RHS160x80,RH,160,80,7.1 +RHS,RHS160x80,RH,160,80,8.0 +RHS,RHS160x80,RH,160,80,8.8 +RHS,RHS160x80,RH,160,80,10.0 +RHS,RHS160x80,RH,160,80,11.0 +RHS,RHS160x80,RH,160,80,12.5 +RHS,RHS180x60,RH,180,60,4.0 +RHS,RHS180x60,RH,180,60,5.0 +RHS,RHS180x60,RH,180,60,5.6 +RHS,RHS180x60,RH,180,60,6.3 +RHS,RHS180x60,RH,180,60,7.1 +RHS,RHS180x60,RH,180,60,8.0 +RHS,RHS180x60,RH,180,60,8.8 +RHS,RHS180x60,RH,180,60,10.0 +RHS,RHS180x60,RH,180,60,11.0 +RHS,RHS180x60,RH,180,60,12.5 +RHS,RHS180x100,RH,180,100,4.0 +RHS,RHS180x100,RH,180,100,5.0 +RHS,RHS180x100,RH,180,100,5.6 +RHS,RHS180x100,RH,180,100,6.3 +RHS,RHS180x100,RH,180,100,7.1 +RHS,RHS180x100,RH,180,100,8.0 +RHS,RHS180x100,RH,180,100,8.8 +RHS,RHS180x100,RH,180,100,10.0 +RHS,RHS180x100,RH,180,100,11.0 +RHS,RHS180x100,RH,180,100,12.5 +RHS,RHS180x100,RH,180,100,14.2 +RHS,RHS200x100,RH,200,100,4.0 +RHS,RHS200x100,RH,200,100,5.0 +RHS,RHS200x100,RH,200,100,5.6 +RHS,RHS200x100,RH,200,100,6.3 +RHS,RHS200x100,RH,200,100,7.1 +RHS,RHS200x100,RH,200,100,8.0 +RHS,RHS200x100,RH,200,100,8.8 +RHS,RHS200x100,RH,200,100,10.0 +RHS,RHS200x100,RH,200,100,11.0 +RHS,RHS200x100,RH,200,100,12.5 +RHS,RHS200x100,RH,200,100,14.2 +RHS,RHS200x100,RH,200,100,16.0 +RHS,RHS200x120,RH,200,120,5.0 +RHS,RHS200x120,RH,200,120,5.6 +RHS,RHS200x120,RH,200,120,6.3 +RHS,RHS200x120,RH,200,120,7.1 +RHS,RHS200x120,RH,200,120,8.0 +RHS,RHS200x120,RH,200,120,8.8 +RHS,RHS200x120,RH,200,120,10.0 +RHS,RHS200x120,RH,200,120,11.0 +RHS,RHS200x120,RH,200,120,12.5 +RHS,RHS200x120,RH,200,120,14.2 +RHS,RHS200x120,RH,200,120,16.0 +RHS,RHS200x150,RH,200,150,5.0 +RHS,RHS200x150,RH,200,150,5.6 +RHS,RHS200x150,RH,200,150,6.3 +RHS,RHS200x150,RH,200,150,7.1 +RHS,RHS200x150,RH,200,150,8.0 +RHS,RHS200x150,RH,200,150,8.8 +RHS,RHS200x150,RH,200,150,10.0 +RHS,RHS200x150,RH,200,150,11.0 +RHS,RHS200x150,RH,200,150,12.5 +RHS,RHS200x150,RH,200,150,14.2 +RHS,RHS200x150,RH,200,150,16.0 +RHS,RHS220x120,RH,220,120,7.1 +RHS,RHS220x120,RH,220,120,8.0 +RHS,RHS220x120,RH,220,120,8.8 +RHS,RHS220x120,RH,220,120,10.0 +RHS,RHS220x120,RH,220,120,11.0 +RHS,RHS220x120,RH,220,120,12.5 +RHS,RHS220x120,RH,220,120,14.2 +RHS,RHS220x120,RH,220,120,16.0 +RHS,RHS250x100,RH,250,100,5.0 +RHS,RHS250x100,RH,250,100,5.6 +RHS,RHS250x100,RH,250,100,6.3 +RHS,RHS250x100,RH,250,100,7.1 +RHS,RHS250x100,RH,250,100,8.0 +RHS,RHS250x100,RH,250,100,8.8 +RHS,RHS250x100,RH,250,100,10.0 +RHS,RHS250x100,RH,250,100,11.0 +RHS,RHS250x100,RH,250,100,12.5 +RHS,RHS250x100,RH,250,100,14.2 +RHS,RHS250x100,RH,250,100,16.0 +RHS,RHS250x150,RH,250,150,5.0 +RHS,RHS250x150,RH,250,150,5.6 +RHS,RHS250x150,RH,250,150,6.3 +RHS,RHS250x150,RH,250,150,7.1 +RHS,RHS250x150,RH,250,150,8.0 +RHS,RHS250x150,RH,250,150,8.8 +RHS,RHS250x150,RH,250,150,10.0 +RHS,RHS250x150,RH,250,150,11.0 +RHS,RHS250x150,RH,250,150,12.5 +RHS,RHS250x150,RH,250,150,14.2 +RHS,RHS250x150,RH,250,150,16.0 +RHS,RHS260x140,RH,260,140,5.0 +RHS,RHS260x140,RH,260,140,5.6 +RHS,RHS260x140,RH,260,140,6.3 +RHS,RHS260x140,RH,260,140,7.1 +RHS,RHS260x140,RH,260,140,8.0 +RHS,RHS260x140,RH,260,140,8.8 +RHS,RHS260x140,RH,260,140,10.0 +RHS,RHS260x140,RH,260,140,11.0 +RHS,RHS260x140,RH,260,140,12.5 +RHS,RHS260x140,RH,260,140,14.2 +RHS,RHS260x140,RH,260,140,16.0 +RHS,RHS260x180,RH,260,180,8.0 +RHS,RHS260x180,RH,260,180,8.8 +RHS,RHS260x180,RH,260,180,10.0 +RHS,RHS260x180,RH,260,180,11.0 +RHS,RHS260x180,RH,260,180,12.5 +RHS,RHS260x180,RH,260,180,14.2 +RHS,RHS260x180,RH,260,180,16.0 +RHS,RHS300x100,RH,300,100,5.0 +RHS,RHS300x100,RH,300,100,5.6 +RHS,RHS300x100,RH,300,100,6.3 +RHS,RHS300x100,RH,300,100,7.1 +RHS,RHS300x100,RH,300,100,8.0 +RHS,RHS300x100,RH,300,100,8.8 +RHS,RHS300x100,RH,300,100,10.0 +RHS,RHS300x100,RH,300,100,11.0 +RHS,RHS300x100,RH,300,100,12.5 +RHS,RHS300x100,RH,300,100,14.2 +RHS,RHS300x100,RH,300,100,16.0 +RHS,RHS300x200,RH,300,200,5.0 +RHS,RHS300x200,RH,300,200,5.6 +RHS,RHS300x200,RH,300,200,6.3 +RHS,RHS300x200,RH,300,200,7.1 +RHS,RHS300x200,RH,300,200,8.0 +RHS,RHS300x200,RH,300,200,8.8 +RHS,RHS300x200,RH,300,200,10.0 +RHS,RHS300x200,RH,300,200,11.0 +RHS,RHS300x200,RH,300,200,12.5 +RHS,RHS300x200,RH,300,200,14.2 +RHS,RHS300x200,RH,300,200,16.0 +RHS,RHS300x250,RH,300,250,6.3 +RHS,RHS300x250,RH,300,250,7.1 +RHS,RHS300x250,RH,300,250,8.0 +RHS,RHS300x250,RH,300,250,8.8 +RHS,RHS300x250,RH,300,250,10.0 +RHS,RHS300x250,RH,300,250,11.0 +RHS,RHS300x250,RH,300,250,12.5 +RHS,RHS300x250,RH,300,250,14.2 +RHS,RHS300x250,RH,300,250,16.0 +RHS,RHS350x150,RH,350,150,5.0 +RHS,RHS350x150,RH,350,150,5.6 +RHS,RHS350x150,RH,350,150,6.3 +RHS,RHS350x150,RH,350,150,7.1 +RHS,RHS350x150,RH,350,150,8.0 +RHS,RHS350x150,RH,350,150,8.8 +RHS,RHS350x150,RH,350,150,10.0 +RHS,RHS350x150,RH,350,150,11.0 +RHS,RHS350x150,RH,350,150,12.5 +RHS,RHS350x150,RH,350,150,14.2 +RHS,RHS350x150,RH,350,150,16.0 +RHS,RHS350x200,RH,350,200,6.3 +RHS,RHS350x200,RH,350,200,7.1 +RHS,RHS350x200,RH,350,200,8.0 +RHS,RHS350x200,RH,350,200,8.8 +RHS,RHS350x200,RH,350,200,10.0 +RHS,RHS350x200,RH,350,200,11.0 +RHS,RHS350x200,RH,350,200,12.5 +RHS,RHS350x200,RH,350,200,14.2 +RHS,RHS350x200,RH,350,200,16.0 +RHS,RHS350x250,RH,350,250,6.3 +RHS,RHS350x250,RH,350,250,7.1 +RHS,RHS350x250,RH,350,250,8.0 +RHS,RHS350x250,RH,350,250,8.8 +RHS,RHS350x250,RH,350,250,10.0 +RHS,RHS350x250,RH,350,250,11.0 +RHS,RHS350x250,RH,350,250,12.5 +RHS,RHS350x250,RH,350,250,14.2 +RHS,RHS350x250,RH,350,250,16.0 +RHS,RHS400x150,RH,400,150,6.3 +RHS,RHS400x150,RH,400,150,7.1 +RHS,RHS400x150,RH,400,150,8.0 +RHS,RHS400x150,RH,400,150,8.8 +RHS,RHS400x150,RH,400,150,10.0 +RHS,RHS400x150,RH,400,150,11.0 +RHS,RHS400x150,RH,400,150,12.5 +RHS,RHS400x150,RH,400,150,14.2 +RHS,RHS400x150,RH,400,150,16.0 +RHS,RHS400x200,RH,400,200,6.3 +RHS,RHS400x200,RH,400,200,7.1 +RHS,RHS400x200,RH,400,200,8.0 +RHS,RHS400x200,RH,400,200,8.8 +RHS,RHS400x200,RH,400,200,10.0 +RHS,RHS400x200,RH,400,200,11.0 +RHS,RHS400x200,RH,400,200,12.5 +RHS,RHS400x200,RH,400,200,14.2 +RHS,RHS400x200,RH,400,200,16.0 +RHS,RHS400x300,RH,400,300,8.0 +RHS,RHS400x300,RH,400,300,8.8 +RHS,RHS400x300,RH,400,300,10.0 +RHS,RHS400x300,RH,400,300,11.0 +RHS,RHS400x300,RH,400,300,12.5 +RHS,RHS400x300,RH,400,300,14.2 +RHS,RHS400x300,RH,400,300,16.0 +RHS,RHS450x150,RH,450,150,8.0 +RHS,RHS450x150,RH,450,150,8.8 +RHS,RHS450x150,RH,450,150,10.0 +RHS,RHS450x150,RH,450,150,11.0 +RHS,RHS450x150,RH,450,150,12.5 +RHS,RHS450x150,RH,450,150,14.2 +RHS,RHS450x150,RH,450,150,16.0 +RHS,RHS450x250,RH,450,250,8.0 +RHS,RHS450x250,RH,450,250,8.8 +RHS,RHS450x250,RH,450,250,10.0 +RHS,RHS450x250,RH,450,250,11.0 +RHS,RHS450x250,RH,450,250,12.5 +RHS,RHS450x250,RH,450,250,14.2 +RHS,RHS450x250,RH,450,250,16.0 +RHS,RHS500x200,RH,500,200,8.0 +RHS,RHS500x200,RH,500,200,8.8 +RHS,RHS500x200,RH,500,200,10.0 +RHS,RHS500x200,RH,500,200,11.0 +RHS,RHS500x200,RH,500,200,12.5 +RHS,RHS500x200,RH,500,200,14.2 +RHS,RHS500x200,RH,500,200,16.0 +RHS,RHS500x300,RH,500,300,8.0 +RHS,RHS500x300,RH,500,300,8.8 +RHS,RHS500x300,RH,500,300,10.0 +RHS,RHS500x300,RH,500,300,11.0 +RHS,RHS500x300,RH,500,300,12.5 +RHS,RHS500x300,RH,500,300,14.2 +RHS,RHS500x300,RH,500,300,16.0 + + +# U-profile + +# Category,Name,U,width,height,web thickness,flange thickness + +UPE,UPE80,U,80,50,4,7 +UPE,UPE100,U,100,55,4.5,7.5 +UPE,UPE120,U,120,60,5,8 +UPE,UPE140,U,140,65,5,9 +UPE,UPE160,U,160,70,5.5,9.5 +UPE,UPE180,U,180,75,5.5,10.5 +UPE,UPE200,U,200,80,6,11 +UPE,UPE220,U,220,85,6.5,12 +UPE,UPE240,U,240,90,7,12.5 +UPE,UPE270,U,270,95,7.5,13.5 +UPE,UPE300,U,300,100,9.5,15 +UPE,UPE330,U,330,105,11,16 +UPE,UPE360,U,360,110,12,17 +UPE,UPE400,U,400,115,13.5,18 diff --git a/src/Mod/Arch/Presets/pset_definitions.csv b/src/Mod/Arch/Presets/pset_definitions.csv index 86362c34fe..a96d59f81d 100644 --- a/src/Mod/Arch/Presets/pset_definitions.csv +++ b/src/Mod/Arch/Presets/pset_definitions.csv @@ -1,351 +1,351 @@ -Pset_ActionRequest;RequestSourceLabel;IfcLabel;RequestComments;IfcText -Pset_ActorCommon;NumberOfActors;IfcCountMeasure;Category;IfcLabel;SkillLevel;IfcLabel -Pset_ActuatorTypeCommon;Reference;IfcIdentifier;ManualOverride;IfcBoolean -Pset_ActuatorTypeElectricActuator;ActuatorInputPower;IfcPowerMeasure -Pset_ActuatorTypeHydraulicActuator;InputPressure;IfcPressureMeasure;InputFlowrate;IfcVolumetricFlowRateMeasure -Pset_ActuatorTypeLinearActuation;Force;IfcForceMeasure;Stroke;IfcLengthMeasure -Pset_ActuatorTypePneumaticActuator;InputPressure;IfcPressureMeasure;InputFlowrate;IfcVolumetricFlowRateMeasure -Pset_ActuatorTypeRotationalActuation;Torque;IfcTorqueMeasure;RangeAngle;IfcPlaneAngleMeasure -Pset_AirSideSystemInformation;Name;IfcLabel;Description;IfcLabel;TotalAirflow;IfcVolumetricFlowRateMeasure;EnergyGainTotal;IfcPowerMeasure;AirflowSensible;IfcVolumetricFlowRateMeasure;EnergyGainSensible;IfcPowerMeasure;EnergyLoss;IfcPowerMeasure;LightingDiversity;IfcPositiveRatioMeasure;InfiltrationDiversitySummer;IfcPositiveRatioMeasure;InfiltrationDiversityWinter;IfcPositiveRatioMeasure;ApplianceDiversity;IfcPositiveRatioMeasure;LoadSafetyFactor;IfcPositiveRatioMeasure;HeatingTemperatureDelta;IfcThermodynamicTemperatureMeasure;CoolingTemperatureDelta;IfcThermodynamicTemperatureMeasure;Ventilation;IfcVolumetricFlowRateMeasure;FanPower;IfcPowerMeasure -Pset_AirTerminalBoxTypeCommon;Reference;IfcIdentifier;AirflowRateRange;IfcVolumetricFlowRateMeasure;AirPressureRange;IfcPressureMeasure;NominalAirFlowRate;IfcVolumetricFlowRateMeasure;HasSoundAttenuator;IfcBoolean;HasReturnAir;IfcBoolean;HasFan;IfcBoolean;NominalInletAirPressure;IfcPressureMeasure;NominalDamperDiameter;IfcPositiveLengthMeasure;HousingThickness;IfcLengthMeasure;OperationTemperatureRange;IfcThermodynamicTemperatureMeasure;ReturnAirFractionRange;IfcPositiveRatioMeasure -Pset_AirTerminalOccurrence;AirFlowRate;IfcVolumetricFlowRateMeasure -Pset_AirTerminalPHistory;InductionRatio;IfcLengthMeasure;CenterlineAirVelocity;IfcLengthMeasure -Pset_AirTerminalTypeCommon;Reference;IfcIdentifier;SlotWidth;IfcPositiveLengthMeasure;SlotLength;IfcPositiveLengthMeasure;NumberOfSlots;IfcInteger;AirFlowrateRange;IfcVolumetricFlowRateMeasure;TemperatureRange;IfcThermodynamicTemperatureMeasure;ThrowLength;IfcLengthMeasure;AirDiffusionPerformanceIndex;IfcReal;FinishColor;IfcLabel;CoreSetHorizontal;IfcPlaneAngleMeasure;CoreSetVertical;IfcPlaneAngleMeasure;HasIntegralControl;IfcBoolean;HasSoundAttenuator;IfcBoolean;HasThermalInsulation;IfcBoolean;NeckArea;IfcAreaMeasure;EffectiveArea;IfcAreaMeasure;AirFlowrateVersusFlowControlElement;IfcPositiveRatioMeasure -Pset_AirToAirHeatRecoveryTypeCommon;Reference;IfcIdentifier;HasDefrost;IfcBoolean;OperationalTemperatureRange;IfcThermodynamicTemperatureMeasure;PrimaryAirflowRateRange;IfcVolumetricFlowRateMeasure;SecondaryAirflowRateRange;IfcPressureMeasure -Pset_AlarmTypeCommon;Reference;IfcIdentifier;Condition;IfcLabel -Pset_AnnotationContourLine;ContourValue;IfcLengthMeasure -Pset_AnnotationLineOfSight;SetbackDistance;IfcPositiveLengthMeasure;VisibleAngleLeft;IfcPositivePlaneAngleMeasure;VisibleAngleRight;IfcPositivePlaneAngleMeasure;RoadVisibleDistanceLeft;IfcPositiveLengthMeasure;RoadVisibleDistanceRight;IfcPositiveLengthMeasure -Pset_AnnotationSurveyArea;AccuracyQualityObtained;IfcRatioMeasure;AccuracyQualityExpected;IfcRatioMeasure -Pset_AudioVisualApplianceTypeAmplifier;AudioAmplification;IfcSoundPowerMeasure;AudioMode;IfcLabel -Pset_AudioVisualApplianceTypeCamera;IsOutdoors;IfcBoolean;VideoResolutionWidth;IfcInteger;VideoResolutionHeight;IfcInteger;VideoResolutionMode;IfcLabel;VideoCaptureInterval;IfcTimeMeasure;PanTiltZoomPreset;IfcLabel;PanHorizontal;IfcLengthMeasure;PanVertical;IfcLengthMeasure;TiltHorizontal;IfcPlaneAngleMeasure;TiltVertical;IfcPlaneAngleMeasure;Zoom;IfcPositiveLengthMeasure -Pset_AudioVisualApplianceTypeCommon;Reference;IfcIdentifier;MediaSource;IfcLabel;AudioVolume;IfcSoundPowerMeasure -Pset_AudioVisualApplianceTypeDisplay;NominalSize;IfcPositiveLengthMeasure;DisplayWidth;IfcPositiveLengthMeasure;DisplayHeight;IfcPositiveLengthMeasure;Brightness;IfcIlluminanceMeasure;ContrastRatio;IfcPositiveRatioMeasure;RefreshRate;IfcFrequencyMeasure;VideoResolutionWidth;IfcInteger;VideoResolutionHeight;IfcInteger;VideoResolutionMode;IfcLabel;VideoScaleMode;IfcLabel;VideoCaptionMode;IfcLabel;AudioMode;IfcLabel -Pset_AudioVisualApplianceTypePlayer;PlayerMediaEject;IfcBoolean;PlayerMediaFormat;IfcLabel -Pset_AudioVisualApplianceTypeProjector;VideoResolutionWidth;IfcInteger;VideoResolutionHeight;IfcInteger;VideoResolutionMode;IfcLabel;VideoScaleMode;IfcLabel;VideoCaptionMode;IfcLabel -Pset_AudioVisualApplianceTypeReceiver;AudioAmplification;IfcRatioMeasure;AudioMode;IfcLabel -Pset_AudioVisualApplianceTypeSpeaker;SpeakerDriverSize;IfcPositiveLengthMeasure;FrequencyResponse;IfcSoundPowerMeasure;Impedence;IfcFrequencyMeasure -Pset_AudioVisualApplianceTypeTuner;TunerMode;IfcLabel;TunerChannel;IfcLabel;TunerFrequency;IfcFrequencyMeasure -Pset_BeamCommon;Reference;IfcIdentifier;Span;IfcPositiveLengthMeasure;Slope;IfcPlaneAngleMeasure;Roll;IfcPlaneAngleMeasure;IsExternal;IfcBoolean;ThermalTransmittance;IfcThermalTransmittanceMeasure;LoadBearing;IfcBoolean;FireRating;IfcLabel -Pset_BoilerTypeCommon;Reference;IfcIdentifier;PressureRating;IfcPressureMeasure;HeatTransferSurfaceArea;IfcAreaMeasure;NominalPartLoadRatio;IfcReal;WaterInletTemperatureRange;IfcThermodynamicTemperatureMeasure;WaterStorageCapacity;IfcVolumeMeasure;IsWaterStorageHeater;IfcBoolean;PartialLoadEfficiencyCurves;IfcNormalisedRatioMeasure;OutletTemperatureRange;IfcThermodynamicTemperatureMeasure;NominalEnergyConsumption;IfcPowerMeasure -Pset_BoilerTypeSteam;MaximumOutletPressure;IfcLabel;NominalEfficiency;IfcNormalisedRatioMeasure;HeatOutput;IfcEnergyMeasure -Pset_BoilerTypeWater;NominalEfficiency;IfcNormalisedRatioMeasure;HeatOutput;IfcEnergyMeasure -Pset_BuildingCommon;Reference;IfcIdentifier;BuildingID;IfcIdentifier;IsPermanentID;IfcBoolean;ConstructionMethod;IfcLabel;FireProtectionClass;IfcLabel;SprinklerProtection;IfcBoolean;SprinklerProtectionAutomatic;IfcBoolean;OccupancyType;IfcLabel;GrossPlannedArea;IfcAreaMeasure;NetPlannedArea;IfcAreaMeasure;NumberOfStoreys;IfcInteger;YearOfConstruction;IfcLabel;YearOfLastRefurbishment;IfcLabel;IsLandmarked;IfcLogical -Pset_BuildingElementProxyCommon;Reference;IfcIdentifier;IsExternal;IfcBoolean;ThermalTransmittance;IfcThermalTransmittanceMeasure;LoadBearing;IfcBoolean;FireRating;IfcLabel -Pset_BuildingElementProxyProvisionForVoid;Shape;IfcLabel;Width;IfcPositiveLengthMeasure;Height;IfcPositiveLengthMeasure;Diameter;IfcPositiveLengthMeasure;Depth;IfcPositiveLengthMeasure;System;IfcLabel -Pset_BuildingStoreyCommon;Reference;IfcIdentifier;EntranceLevel;IfcBoolean;AboveGround;IfcLogical;SprinklerProtection;IfcBoolean;SprinklerProtectionAutomatic;IfcBoolean;LoadBearingCapacity;IfcPlanarForceMeasure;GrossPlannedArea;IfcAreaMeasure;NetPlannedArea;IfcAreaMeasure -Pset_BuildingSystemCommon;Reference;IfcIdentifier -Pset_BuildingUse;MarketCategory;IfcLabel;MarketSubCategory;IfcLabel;PlanningControlStatus;IfcLabel;NarrativeText;IfcText;VacancyRateInCategoryNow;IfcPositiveRatioMeasure;TenureModesAvailableNow;IfcLabel;MarketSubCategoriesAvailableNow;IfcLabel;RentalRatesInCategoryNow;IfcMonetaryMeasure;VacancyRateInCategoryFuture;IfcPositiveRatioMeasure;TenureModesAvailableFuture;IfcLabel;MarketSubCategoriesAvailableFuture;IfcLabel;RentalRatesInCategoryFuture;IfcMonetaryMeasure -Pset_BuildingUseAdjacent;MarketCategory;IfcLabel;MarketSubCategory;IfcLabel;PlanningControlStatus;IfcLabel;NarrativeText;IfcText -Pset_BurnerTypeCommon;Reference;IfcIdentifier -Pset_CableCarrierFittingTypeCommon;Reference;IfcIdentifier -Pset_CableCarrierSegmentTypeCableLadderSegment;NominalWidth;IfcPositiveLengthMeasure;NominalHeight;IfcPositiveLengthMeasure;LadderConfiguration;IfcText -Pset_CableCarrierSegmentTypeCableTraySegment;NominalWidth;IfcPositiveLengthMeasure;NominalHeight;IfcPositiveLengthMeasure;HasCover;IfcBoolean -Pset_CableCarrierSegmentTypeCableTrunkingSegment;NominalWidth;IfcPositiveLengthMeasure;NominalHeight;IfcPositiveLengthMeasure;NumberOfCompartments;IfcInteger -Pset_CableCarrierSegmentTypeCommon;Reference;IfcIdentifier -Pset_CableCarrierSegmentTypeConduitSegment;NominalWidth;IfcPositiveLengthMeasure;NominalHeight;IfcPositiveLengthMeasure;IsRigid;IfcBoolean -Pset_CableFittingTypeCommon;Reference;IfcIdentifier -Pset_CableSegmentOccurrence;DesignAmbientTemperature;IfcThermodynamicTemperatureMeasure;UserCorrectionFactor;IfcReal;NumberOfParallelCircuits;IfcInteger;InstallationMethod;IfcLabel;DistanceBetweenParallelCircuits;IfcLengthMeasure;SoilConductivity;IfcThermalConductivityMeasure;CarrierStackNumber;IfcInteger;IsHorizontalCable;IfcBoolean;IsMountedFlatCable;IfcBoolean;CurrentCarryingCapasity;IfcElectricCurrentMeasure;MaximumCableLength;IfcLengthMeasure;PowerLoss;IfcElectricCurrentMeasure -Pset_CableSegmentTypeBusBarSegment;IsHorizontalBusbar;IfcBoolean -Pset_CableSegmentTypeCableSegment;Standard;IfcLabel;NumberOfCores;IfcInteger;OverallDiameter;IfcPositiveLengthMeasure;RatedVoltage;IfcElectricVoltageMeasure;RatedTemperature;IfcThermodynamicTemperatureMeasure;ScreenDiameter;IfcPositiveLengthMeasure;HasProtectiveEarth;IfcBoolean;MaximumOperatingTemperature;IfcThermodynamicTemperatureMeasure;MaximumShortCircuitTemperature;IfcThermodynamicTemperatureMeasure;SpecialConstruction;IfcLabel;Weight;IfcMassMeasure;SelfExtinguishing60332_1;IfcBoolean;SelfExtinguishing60332_3;IfcBoolean;HalogenProof;IfcBoolean;FunctionReliable;IfcBoolean -Pset_CableSegmentTypeCommon;Reference;IfcIdentifier -Pset_CableSegmentTypeConductorSegment;CrossSectionalArea;IfcAreaMeasure -Pset_CableSegmentTypeCoreSegment;OverallDiameter;IfcPositiveLengthMeasure;RatedVoltage;IfcElectricVoltageMeasure;RatedTemperature;IfcThermodynamicTemperatureMeasure;ScreenDiameter;IfcPositiveLengthMeasure;CoreIdentifier;IfcIdentifier;Weight;IfcMassMeasure;SelfExtinguishing60332_1;IfcBoolean;SelfExtinguishing60332_3;IfcBoolean;HalogenProof;IfcBoolean;FunctionReliable;IfcBoolean;Standard;IfcLabel -Pset_ChillerTypeCommon;Reference;IfcIdentifier;NominalCapacity;IfcPowerMeasure;NominalEfficiency;IfcPositiveRatioMeasure;NominalCondensingTemperature;IfcThermodynamicTemperatureMeasure;NominalEvaporatingTemperature;IfcThermodynamicTemperatureMeasure;NominalHeatRejectionRate;IfcPowerMeasure;NominalPowerConsumption;IfcPowerMeasure;CapacityCurve;IfcPowerMeasure;CoefficientOfPerformanceCurve;IfcReal;FullLoadRatioCurve;IfcNormalisedRatioMeasure -Pset_ChimneyCommon;Reference;IfcIdentifier;NumberOfDrafts;IfcCountMeasure;IsExternal;IfcBoolean;ThermalTransmittance;IfcThermalTransmittanceMeasure;LoadBearing;IfcBoolean;FireRating;IfcLabel -Pset_CivilElementCommon;Reference;IfcIdentifier -Pset_CoilOccurrence;HasSoundAttenuation;IfcBoolean -Pset_CoilTypeCommon;Reference;IfcIdentifier;OperationalTemperatureRange;IfcThermodynamicTemperatureMeasure;AirflowRateRange;IfcVolumetricFlowRateMeasure;NominalSensibleCapacity;IfcPowerMeasure;NominalLatentCapacity;IfcPowerMeasure;NominalUA;IfcReal -Pset_CoilTypeHydronic;FluidPressureRange;IfcPressureMeasure;CoilFaceArea;IfcAreaMeasure;HeatExchangeSurfaceArea;IfcAreaMeasure;PrimarySurfaceArea;IfcAreaMeasure;SecondarySurfaceArea;IfcAreaMeasure;TotalUACurves;IfcVolumetricFlowRateMeasure;WaterPressureDropCurve;IfcPressureMeasure;BypassFactor;IfcNormalisedRatioMeasure;SensibleHeatRatio;IfcNormalisedRatioMeasure;WetCoilFraction;IfcNormalisedRatioMeasure -Pset_ColumnCommon;Reference;IfcIdentifier;Slope;IfcPlaneAngleMeasure;Roll;IfcPlaneAngleMeasure;IsExternal;IfcBoolean;ThermalTransmittance;IfcThermalTransmittanceMeasure;LoadBearing;IfcBoolean;FireRating;IfcLabel -Pset_CommunicationsApplianceTypeCommon;Reference;IfcIdentifier -Pset_CompressorTypeCommon;Reference;IfcIdentifier;MinimumPartLoadRatio;IfcPositiveRatioMeasure;MaximumPartLoadRatio;IfcPositiveRatioMeasure;CompressorSpeed;IfcRotationalFrequencyMeasure;NominalCapacity;IfcPowerMeasure;IdealCapacity;IfcPowerMeasure;IdealShaftPower;IfcPowerMeasure;HasHotGasBypass;IfcBoolean;ImpellerDiameter;IfcPositiveLengthMeasure -Pset_ConcreteElementGeneral;ConstructionMethod;IfcLabel;StructuralClass;IfcLabel;StrengthClass;IfcLabel;ExposureClass;IfcLabel;ReinforcementVolumeRatio;IfcMassDensityMeasure;ReinforcementAreaRatio;IfcAreaDensityMeasure;DimensionalAccuracyClass;IfcLabel;ConstructionToleranceClass;IfcLabel;ConcreteCover;IfcPositiveLengthMeasure;ConcreteCoverAtMainBars;IfcPositiveLengthMeasure;ConcreteCoverAtLinks;IfcPositiveLengthMeasure;ReinforcementStrengthClass;IfcLabel -Pset_CondenserTypeCommon;Reference;IfcIdentifier;ExternalSurfaceArea;IfcAreaMeasure;InternalSurfaceArea;IfcAreaMeasure;InternalRefrigerantVolume;IfcVolumeMeasure;InternalWaterVolume;IfcVolumeMeasure;NominalHeatTransferArea;IfcAreaMeasure;NominalHeatTransferCoefficient;IfcThermalTransmittanceMeasure -Pset_Condition;AssessmentDate;IfcDate;AssessmentCondition;IfcLabel;AssessmentDescription;IfcText -Pset_ControllerTypeCommon;Reference;IfcIdentifier -Pset_ControllerTypeFloating;Labels;IfcLabel;Range;IfcReal;Value;IfcReal;SignalOffset;IfcReal;SignalFactor;IfcReal;SignalTime;IfcTimeMeasure -Pset_ControllerTypeMultiPosition;Labels;IfcLabel;Range;IfcInteger;Value;IfcInteger -Pset_ControllerTypeProgrammable;FirmwareVersion;IfcLabel;SoftwareVersion;IfcLabel -Pset_ControllerTypeProportional;Labels;IfcLabel;Range;IfcReal;Value;IfcReal;ProportionalConstant;IfcReal;IntegralConstant;IfcReal;DerivativeConstant;IfcReal;SignalTimeIncrease;IfcTimeMeasure;SignalTimeDecrease;IfcTimeMeasure -Pset_ControllerTypeTwoPosition;Labels;IfcLabel;Polarity;IfcBoolean;Value;IfcBoolean -Pset_CooledBeamTypeActive;AirflowRateRange;IfcVolumetricFlowRateMeasure;ConnectionSize;IfcLengthMeasure -Pset_CooledBeamTypeCommon;Reference;IfcIdentifier;IsFreeHanging;IfcBoolean;WaterPressureRange;IfcPressureMeasure;NominalCoolingCapacity;IfcPowerMeasure;NominalSurroundingTemperatureCooling;IfcThermodynamicTemperatureMeasure;NominalSurroundingHumidityCooling;IfcNormalisedRatioMeasure;NominalSupplyWaterTemperatureCooling;IfcThermodynamicTemperatureMeasure;NominalReturnWaterTemperatureCooling;IfcThermodynamicTemperatureMeasure;NominalWaterFlowCooling;IfcVolumetricFlowRateMeasure;NominalHeatingCapacity;IfcPowerMeasure;NominalSurroundingTemperatureHeating;IfcThermodynamicTemperatureMeasure;NominalSupplyWaterTemperatureHeating;IfcThermodynamicTemperatureMeasure;NominalReturnWaterTemperatureHeating;IfcThermodynamicTemperatureMeasure;NominalWaterFlowHeating;IfcVolumetricFlowRateMeasure;FinishColor;IfcLabel;CoilLength;IfcPositiveLengthMeasure;CoilWidth;IfcPositiveLengthMeasure -Pset_CoolingTowerTypeCommon;Reference;IfcIdentifier;NominalCapacity;IfcPowerMeasure;NumberOfCells;IfcInteger;BasinReserveVolume;IfcVolumeMeasure;LiftElevationDifference;IfcPositiveLengthMeasure;WaterRequirement;IfcVolumetricFlowRateMeasure;OperationTemperatureRange;IfcThermodynamicTemperatureMeasure;AmbientDesignDryBulbTemperature;IfcThermodynamicTemperatureMeasure;AmbientDesignWetBulbTemperature;IfcThermodynamicTemperatureMeasure -Pset_CoveringCeiling;Permeability;IfcNormalisedRatioMeasure;TileLength;IfcPositiveLengthMeasure;TileWidth;IfcPositiveLengthMeasure -Pset_CoveringCommon;Reference;IfcIdentifier;AcousticRating;IfcLabel;FlammabilityRating;IfcLabel;FragilityRating;IfcLabel;Combustible;IfcBoolean;SurfaceSpreadOfFlame;IfcLabel;Finish;IfcText;IsExternal;IfcBoolean;ThermalTransmittance;IfcThermalTransmittanceMeasure;FireRating;IfcLabel -Pset_CoveringFlooring;HasNonSkidSurface;IfcBoolean;HasAntiStaticSurface;IfcBoolean -Pset_CurtainWallCommon;Reference;IfcIdentifier;AcousticRating;IfcLabel;FireRating;IfcLabel;Combustible;IfcBoolean;SurfaceSpreadOfFlame;IfcLabel;ThermalTransmittance;IfcThermalTransmittanceMeasure;IsExternal;IfcBoolean -Pset_DamperTypeCommon;Reference;IfcIdentifier;BladeThickness;IfcPositiveLengthMeasure;NumberofBlades;IfcInteger;FaceArea;IfcAreaMeasure;MaximumAirFlowRate;IfcVolumetricFlowRateMeasure;TemperatureRange;IfcThermodynamicTemperatureMeasure;MaximumWorkingPressure;IfcPressureMeasure;TemperatureRating;IfcThermodynamicTemperatureMeasure;NominalAirFlowRate;IfcVolumetricFlowRateMeasure;OpenPressureDrop;IfcPressureMeasure;LeakageFullyClosed;IfcVolumetricFlowRateMeasure;LossCoefficentCurve;IfcReal;LeakageCurve;IfcPressureMeasure;RegeneratedSoundCurve;IfcSoundPressureMeasure;FrameType;IfcLabel;FrameDepth;IfcPositiveLengthMeasure;FrameThickness;IfcPositiveLengthMeasure;CloseOffRating;IfcPressureMeasure -Pset_DamperTypeControlDamper;TorqueRange;IfcTorqueMeasure -Pset_DamperTypeFireDamper;FireResistanceRating;IfcLabel;FusibleLinkTemperature;IfcThermodynamicTemperatureMeasure -Pset_DamperTypeFireSmokeDamper;ControlType;IfcLabel;FireResistanceRating;IfcLabel;FusibleLinkTemperature;IfcThermodynamicTemperatureMeasure -Pset_DamperTypeSmokeDamper;ControlType;IfcLabel -Pset_DiscreteAccessoryColumnShoe;ColumnShoeBasePlateThickness;IfcPositiveLengthMeasure;ColumnShoeBasePlateWidth;IfcPositiveLengthMeasure;ColumnShoeBasePlateDepth;IfcPositiveLengthMeasure;ColumnShoeCasingHeight;IfcPositiveLengthMeasure;ColumnShoeCasingWidth;IfcPositiveLengthMeasure;ColumnShoeCasingDepth;IfcPositiveLengthMeasure -Pset_DiscreteAccessoryCornerFixingPlate;CornerFixingPlateLength;IfcPositiveLengthMeasure;CornerFixingPlateThickness;IfcPositiveLengthMeasure;CornerFixingPlateFlangeWidthInPlaneZ;IfcPositiveLengthMeasure;CornerFixingPlateFlangeWidthInPlaneX;IfcPositiveLengthMeasure -Pset_DiscreteAccessoryDiagonalTrussConnector;DiagonalTrussHeight;IfcPositiveLengthMeasure;DiagonalTrussLength;IfcPositiveLengthMeasure;DiagonalTrussCrossBarSpacing;IfcPositiveLengthMeasure;DiagonalTrussBaseBarDiameter;IfcPositiveLengthMeasure;DiagonalTrussSecondaryBarDiameter;IfcPositiveLengthMeasure;DiagonalTrussCrossBarDiameter;IfcPositiveLengthMeasure -Pset_DiscreteAccessoryEdgeFixingPlate;EdgeFixingPlateLength;IfcPositiveLengthMeasure;EdgeFixingPlateThickness;IfcPositiveLengthMeasure;EdgeFixingPlateFlangeWidthInPlaneZ;IfcPositiveLengthMeasure;EdgeFixingPlateFlangeWidthInPlaneX;IfcPositiveLengthMeasure -Pset_DiscreteAccessoryFixingSocket;FixingSocketHeight;IfcPositiveLengthMeasure;FixingSocketThreadDiameter;IfcPositiveLengthMeasure;FixingSocketThreadLength;IfcPositiveLengthMeasure -Pset_DiscreteAccessoryLadderTrussConnector;LadderTrussHeight;IfcPositiveLengthMeasure;LadderTrussLength;IfcPositiveLengthMeasure;LadderTrussCrossBarSpacing;IfcPositiveLengthMeasure;LadderTrussBaseBarDiameter;IfcPositiveLengthMeasure;LadderTrussSecondaryBarDiameter;IfcPositiveLengthMeasure;LadderTrussCrossBarDiameter;IfcPositiveLengthMeasure -Pset_DiscreteAccessoryStandardFixingPlate;StandardFixingPlateWidth;IfcPositiveLengthMeasure;StandardFixingPlateDepth;IfcPositiveLengthMeasure;StandardFixingPlateThickness;IfcPositiveLengthMeasure -Pset_DiscreteAccessoryWireLoop;WireLoopBasePlateThickness;IfcPositiveLengthMeasure;WireLoopBasePlateWidth;IfcPositiveLengthMeasure;WireLoopBasePlateLength;IfcPositiveLengthMeasure;WireDiameter;IfcPositiveLengthMeasure;WireEmbeddingLength;IfcPositiveLengthMeasure;WireLoopLength;IfcPositiveLengthMeasure -Pset_DistributionChamberElementCommon;Reference;IfcIdentifier -Pset_DistributionChamberElementTypeFormedDuct;ClearWidth;IfcPositiveLengthMeasure;ClearDepth;IfcPositiveLengthMeasure;WallThickness;IfcPositiveLengthMeasure;BaseThickness;IfcPositiveLengthMeasure;AccessCoverLoadRating;IfcText -Pset_DistributionChamberElementTypeInspectionChamber;ChamberLengthOrRadius;IfcPositiveLengthMeasure;ChamberWidth;IfcPositiveLengthMeasure;InvertLevel;IfcLengthMeasure;SoffitLevel;IfcLengthMeasure;WallThickness;IfcPositiveLengthMeasure;BaseThickness;IfcPositiveLengthMeasure;WithBackdrop;IfcBoolean;AccessLengthOrRadius;IfcPositiveLengthMeasure;AccessWidth;IfcPositiveLengthMeasure;AccessCoverLoadRating;IfcText -Pset_DistributionChamberElementTypeInspectionPit;Length;IfcPositiveLengthMeasure;Width;IfcPositiveLengthMeasure;Depth;IfcPositiveLengthMeasure -Pset_DistributionChamberElementTypeManhole;InvertLevel;IfcLengthMeasure;SoffitLevel;IfcLengthMeasure;WallThickness;IfcPositiveLengthMeasure;BaseThickness;IfcPositiveLengthMeasure;IsShallow;IfcBoolean;HasSteps;IfcBoolean;WithBackdrop;IfcBoolean;AccessLengthOrRadius;IfcPositiveLengthMeasure;AccessWidth;IfcPositiveLengthMeasure;AccessCoverLoadRating;IfcText -Pset_DistributionChamberElementTypeMeterChamber;ChamberLengthOrRadius;IfcPositiveLengthMeasure;ChamberWidth;IfcPositiveLengthMeasure;WallThickness;IfcPositiveLengthMeasure;BaseThickness;IfcPositiveLengthMeasure -Pset_DistributionChamberElementTypeSump;Length;IfcPositiveLengthMeasure;Width;IfcPositiveLengthMeasure;InvertLevel;IfcPositiveLengthMeasure -Pset_DistributionChamberElementTypeTrench;Width;IfcPositiveLengthMeasure;Depth;IfcPositiveLengthMeasure;InvertLevel;IfcLengthMeasure -Pset_DistributionChamberElementTypeValveChamber;ChamberLengthOrRadius;IfcPositiveLengthMeasure;ChamberWidth;IfcPositiveLengthMeasure;WallThickness;IfcPositiveLengthMeasure;BaseThickness;IfcPositiveLengthMeasure -Pset_DistributionPortCommon;PortNumber;IfcInteger;ColorCode;IfcLabel -Pset_DistributionPortTypeCable;ConnectionSubtype;IfcLabel;CurrentContent3rdHarmonic;IfcPositiveRatioMeasure;Current;IfcElectricCurrentMeasure;Voltage;IfcElectricVoltageMeasure;Power;IfcPowerMeasure;Protocols;IfcIdentifier -Pset_DistributionPortTypeDuct;ConnectionSubType;IfcLabel;NominalWidth;IfcPositiveLengthMeasure;NominalHeight;IfcPositiveLengthMeasure;NominalThickness;IfcPositiveLengthMeasure;DryBulbTemperature;IfcThermodynamicTemperatureMeasure;WetBulbTemperature;IfcThermodynamicTemperatureMeasure;VolumetricFlowRate;IfcVolumetricFlowRateMeasure;Velocity;IfcLinearVelocityMeasure;Pressure;IfcPressureMeasure -Pset_DistributionPortTypePipe;ConnectionSubType;IfcLabel;NominalDiameter;IfcPositiveLengthMeasure;InnerDiameter;IfcPositiveLengthMeasure;OuterDiameter;IfcPositiveLengthMeasure;Temperature;IfcThermodynamicTemperatureMeasure;VolumetricFlowRate;IfcVolumetricFlowRateMeasure;MassFlowRate;IfcMassFlowRateMeasure;FlowCondition;IfcPositiveRatioMeasure;Velocity;IfcLinearVelocityMeasure;Pressure;IfcPressureMeasure -Pset_DistributionSystemCommon;Reference;IfcIdentifier -Pset_DistributionSystemTypeElectrical;Diversity;IfcPositiveRatioMeasure;NumberOfLiveConductors;IfcInteger;MaximumAllowedVoltageDrop;IfcElectricVoltageMeasure;NetImpedance;IfcElectricResistanceMeasure -Pset_DistributionSystemTypeVentilation;DesignName;IfcLabel;PressureClass;IfcPressureMeasure;LeakageClass;IfcPressureMeasure;FrictionLoss;IfcReal;ScrapFactor;IfcReal;MaximumVelocity;IfcLinearVelocityMeasure;AspectRatio;IfcReal;MinimumHeight;IfcPositiveLengthMeasure;MinimumWidth;IfcPositiveLengthMeasure -Pset_DoorCommon;Reference;IfcIdentifier;FireRating;IfcLabel;AcousticRating;IfcLabel;SecurityRating;IfcLabel;DurabilityRating;IfcLabel;HygrothermalRating;IfcLabel;WaterTightnessRating;IfcLabel;MechanicalLoadRating;IfcLabel;WindLoadRating;IfcLabel;Infiltration;IfcVolumetricFlowRateMeasure;IsExternal;IfcBoolean;ThermalTransmittance;IfcThermalTransmittanceMeasure;GlazingAreaFraction;IfcPositiveRatioMeasure;HandicapAccessible;IfcBoolean;FireExit;IfcBoolean;HasDrive;IfcBoolean;SelfClosing;IfcBoolean;SmokeStop;IfcBoolean -Pset_DoorWindowGlazingType;GlassLayers;IfcCountMeasure;GlassThickness1;IfcPositiveLengthMeasure;GlassThickness2;IfcPositiveLengthMeasure;GlassThickness3;IfcPositiveLengthMeasure;FillGas;IfcLabel;GlassColor;IfcLabel;IsTempered;IfcBoolean;IsLaminated;IfcBoolean;IsCoated;IfcBoolean;IsWired;IfcBoolean;VisibleLightReflectance;IfcNormalisedRatioMeasure;VisibleLightTransmittance;IfcNormalisedRatioMeasure;SolarAbsorption;IfcNormalisedRatioMeasure;SolarReflectance;IfcNormalisedRatioMeasure;SolarTransmittance;IfcNormalisedRatioMeasure;SolarHeatGainTransmittance;IfcNormalisedRatioMeasure;ShadingCoefficient;IfcNormalisedRatioMeasure;ThermalTransmittanceSummer;IfcThermalTransmittanceMeasure;ThermalTransmittanceWinter;IfcThermalTransmittanceMeasure -Pset_DuctFittingOccurrence;InteriorRoughnessCoefficient;IfcPositiveLengthMeasure;HasLiner;IfcBoolean;Color;IfcLabel -Pset_DuctFittingTypeCommon;Reference;IfcIdentifier;PressureClass;IfcPressureMeasure;PressureRange;IfcPressureMeasure;TemperatureRange;IfcThermodynamicTemperatureMeasure -Pset_DuctSegmentOccurrence;InteriorRoughnessCoefficient;IfcPositiveLengthMeasure;HasLiner;IfcBoolean;Color;IfcLabel -Pset_DuctSegmentTypeCommon;Reference;IfcIdentifier;WorkingPressure;IfcPressureMeasure;PressureRange;IfcPressureMeasure;TemperatureRange;IfcThermodynamicTemperatureMeasure;LongitudinalSeam;IfcText;NominalDiameterOrWidth;IfcPositiveLengthMeasure;NominalHeight;IfcPositiveLengthMeasure;Reinforcement;IfcLabel;ReinforcementSpacing;IfcPositiveLengthMeasure -Pset_DuctSilencerTypeCommon;Reference;IfcIdentifier;HydraulicDiameter;IfcLengthMeasure;Length;IfcLengthMeasure;Weight;IfcMassMeasure;AirFlowrateRange;IfcVolumetricFlowRateMeasure;WorkingPressureRange;IfcPressureMeasure;TemperatureRange;IfcThermodynamicTemperatureMeasure;HasExteriorInsulation;IfcBoolean -Pset_ElectricalDeviceCommon;RatedCurrent;IfcElectricCurrentMeasure;RatedVoltage;IfcElectricVoltageMeasure;NominalFrequencyRange;IfcFrequencyMeasure;PowerFactor;IfcNormalisedRatioMeasure;NumberOfPoles;IfcInteger;HasProtectiveEarth;IfcBoolean;IP_Code;IfcLabel;IK_Code;IfcLabel -Pset_ElectricApplianceTypeCommon;Reference;IfcIdentifier -Pset_ElectricDistributionBoardOccurrence;IsMain;IfcBoolean;IsSkilledOperator;IfcBoolean -Pset_ElectricDistributionBoardTypeCommon;Reference;IfcIdentifier -Pset_ElectricFlowStorageDeviceTypeCommon;Reference;IfcIdentifier;NominalSupplyVoltage;IfcElectricVoltageMeasure;NominalSupplyVoltageOffset;IfcElectricVoltageMeasure;NominalFrequency;IfcFrequencyMeasure;ShortCircuit3PoleMaximumState;IfcElectricCurrentMeasure;ShortCircuit3PolePowerFactorMaximumState;IfcReal;ShortCircuit2PoleMinimumState;IfcElectricCurrentMeasure;ShortCircuit2PolePowerFactorMinimumState;IfcReal;ShortCircuit1PoleMaximumState;IfcElectricCurrentMeasure;ShortCircuit1PolePowerFactorMaximumState;IfcReal;ShortCircuit1PoleMinimumState;IfcElectricCurrentMeasure;ShortCircuit1PolePowerFactorMinimumState;IfcReal;EarthFault1PoleMaximumState;IfcElectricCurrentMeasure;EarthFault1PolePowerFactorMaximumState;IfcReal;EarthFault1PoleMinimumState;IfcElectricCurrentMeasure;EarthFault1PolePowerFactorMinimumState;IfcReal -Pset_ElectricGeneratorTypeCommon;Reference;IfcIdentifier;ElectricGeneratorEfficiency;IfcPositiveRatioMeasure;StartCurrentFactor;IfcReal;MaximumPowerOutput;IfcPowerMeasure -Pset_ElectricMotorTypeCommon;Reference;IfcIdentifier;MaximumPowerOutput;IfcPowerMeasure;ElectricMotorEfficiency;IfcPositiveRatioMeasure;StartCurrentFactor;IfcReal;StartingTime;IfcTimeMeasure;TeTime;IfcTimeMeasure;LockedRotorCurrent;IfcElectricCurrentMeasure;FrameSize;IfcLabel;IsGuarded;IfcBoolean;HasPartWinding;IfcBoolean -Pset_ElectricTimeControlTypeCommon;Reference;IfcIdentifier -Pset_ElementAssemblyCommon;Reference;IfcLabel -Pset_ElementComponentCommon;Reference;IfcIdentifier -Pset_EngineTypeCommon;Reference;IfcIdentifier -Pset_EnvironmentalImpactIndicators;Reference;IfcIdentifier;FunctionalUnitReference;IfcLabel;Unit;IfcText;ExpectedServiceLife;IfcTimeMeasure;TotalPrimaryEnergyConsumptionPerUnit;IfcEnergyMeasure;WaterConsumptionPerUnit;IfcVolumeMeasure;HazardousWastePerUnit;IfcMassMeasure;NonHazardousWastePerUnit;IfcMassMeasure;ClimateChangePerUnit;IfcMassMeasure;AtmosphericAcidificationPerUnit;IfcMassMeasure;RenewableEnergyConsumptionPerUnit;IfcEnergyMeasure;NonRenewableEnergyConsumptionPerUnit;IfcEnergyMeasure;ResourceDepletionPerUnit;IfcMassMeasure;InertWastePerUnit;IfcMassMeasure;RadioactiveWastePerUnit;IfcMassMeasure;StratosphericOzoneLayerDestructionPerUnit;IfcMassMeasure;PhotochemicalOzoneFormationPerUnit;IfcMassMeasure;EutrophicationPerUnit;IfcMassMeasure -Pset_EnvironmentalImpactValues;TotalPrimaryEnergyConsumption;IfcEnergyMeasure;WaterConsumption;IfcVolumeMeasure;HazardousWaste;IfcMassMeasure;NonHazardousWaste;IfcMassMeasure;ClimateChange;IfcMassMeasure;AtmosphericAcidification;IfcMassMeasure;RenewableEnergyConsumption;IfcEnergyMeasure;NonRenewableEnergyConsumption;IfcEnergyMeasure;ResourceDepletion;IfcMassMeasure;InertWaste;IfcMassMeasure;RadioactiveWaste;IfcMassMeasure;StratosphericOzoneLayerDestruction;IfcMassMeasure;PhotochemicalOzoneFormation;IfcMassMeasure;Eutrophication;IfcMassMeasure;LeadInTime;IfcDuration;Duration;IfcDuration;LeadOutTime;IfcDuration -Pset_EvaporativeCoolerTypeCommon;Reference;IfcIdentifier;HeatExchangeArea;IfcAreaMeasure;OperationTemperatureRange;IfcThermodynamicTemperatureMeasure;WaterRequirement;IfcVolumetricFlowRateMeasure;EffectivenessTable;IfcReal;AirPressureDropCurve;IfcPressureMeasure;WaterPressDropCurve;IfcPressureMeasure -Pset_EvaporatorTypeCommon;Reference;IfcIdentifier;ExternalSurfaceArea;IfcAreaMeasure;InternalSurfaceArea;IfcAreaMeasure;InternalRefrigerantVolume;IfcVolumeMeasure;InternalWaterVolume;IfcVolumeMeasure;NominalHeatTransferArea;IfcAreaMeasure;NominalHeatTransferCoefficient;IfcThermalTransmittanceMeasure -Pset_FanOccurrence;FractionOfMotorHeatToAirStream;IfcNormalisedRatioMeasure;ImpellerDiameter;IfcPositiveLengthMeasure -Pset_FanTypeCommon;Reference;IfcIdentifier;OperationTemperatureRange;IfcThermodynamicTemperatureMeasure;NominalAirFlowRate;IfcVolumetricFlowRateMeasure;NominalTotalPressure;IfcPressureMeasure;NominalStaticPressure;IfcPressureMeasure;NominalRotationSpeed;IfcRotationalFrequencyMeasure;NominalPowerRate;IfcPowerMeasure;OperationalCriteria;IfcTimeMeasure;PressureCurve;IfcPressureMeasure;EfficiencyCurve;IfcNormalisedRatioMeasure -Pset_FastenerWeld;Type1;IfcLabel;Type2;IfcLabel;Surface1;IfcLabel;Surface2;IfcLabel;Process;IfcInteger;ProcessName;IfcLabel;a;IfcPositiveLengthMeasure;c;IfcPositiveLengthMeasure;d;IfcPositiveLengthMeasure;e;IfcPositiveLengthMeasure;l;IfcPositiveLengthMeasure;n;IfcCountMeasure;s;IfcPositiveLengthMeasure;z;IfcPositiveLengthMeasure;Intermittent;IfcBoolean;Staggered;IfcBoolean -Pset_FilterTypeAirParticleFilter;DustHoldingCapacity;IfcMassMeasure;FaceSurfaceArea;IfcAreaMeasure;MediaExtendedArea;IfcAreaMeasure;NominalCountedEfficiency;IfcReal;NominalWeightedEfficiency;IfcReal;PressureDropCurve;IfcPressureMeasure;CountedEfficiencyCurve;IfcReal;WeightedEfficiencyCurve;IfcReal -Pset_FilterTypeCommon;Reference;IfcIdentifier;Weight;IfcMassMeasure;InitialResistance;IfcPressureMeasure;FinalResistance;IfcPressureMeasure;OperationTemperatureRange;IfcThermodynamicTemperatureMeasure;FlowRateRange;IfcVolumetricFlowRateMeasure;NominalFilterFaceVelocity;IfcLinearVelocityMeasure;NominalMediaSurfaceVelocity;IfcLinearVelocityMeasure;NominalPressureDrop;IfcPressureMeasure;NominalFlowrate;IfcVolumetricFlowRateMeasure;NominalParticleGeometricMeanDiameter;IfcPositiveLengthMeasure;NominalParticleGeometricStandardDeviation;IfcReal -Pset_FilterTypeCompressedAirFilter;OperationPressureMax;IfcPressureMeasure;ParticleAbsorptionCurve;IfcPositiveRatioMeasure;AutomaticCondensateDischarge;IfcBoolean;CloggingIndicator;IfcBoolean -Pset_FireSuppressionTerminalTypeBreechingInlet;InletDiameter;IfcPositiveLengthMeasure;OutletDiameter;IfcPositiveLengthMeasure;HasCaps;IfcBoolean -Pset_FireSuppressionTerminalTypeCommon;Reference;IfcIdentifier -Pset_FireSuppressionTerminalTypeFireHydrant;PumperConnectionSize;IfcPositiveLengthMeasure;NumberOfHoseConnections;IfcInteger;HoseConnectionSize;IfcPositiveLengthMeasure;DischargeFlowRate;IfcVolumetricFlowRateMeasure;FlowClass;IfcLabel;WaterIsPotable;IfcBoolean;PressureRating;IfcPressureMeasure;BodyColor;IfcText;CapColor;IfcText -Pset_FireSuppressionTerminalTypeHoseReel;InletConnectionSize;IfcPositiveLengthMeasure;HoseDiameter;IfcPositiveLengthMeasure;HoseLength;IfcPositiveLengthMeasure;ClassOfService;IfcLabel;ClassificationAuthority;IfcLabel -Pset_FireSuppressionTerminalTypeSprinkler;ActivationTemperature;IfcThermodynamicTemperatureMeasure;CoverageArea;IfcAreaMeasure;HasDeflector;IfcBoolean;DischargeFlowRate;IfcVolumetricFlowRateMeasure;ResidualFlowingPressure;IfcPressureMeasure;DischargeCoefficient;IfcReal;MaximumWorkingPressure;IfcPressureMeasure;ConnectionSize;IfcPositiveLengthMeasure -Pset_FlowInstrumentTypeCommon;Reference;IfcIdentifier -Pset_FlowInstrumentTypePressureGauge;DisplaySize;IfcPositiveLengthMeasure -Pset_FlowInstrumentTypeThermometer;DisplaySize;IfcPositiveLengthMeasure -Pset_FlowMeterTypeCommon;Reference;IfcIdentifier;RemoteReading;IfcBoolean -Pset_FlowMeterTypeEnergyMeter;NominalCurrent;IfcElectricCurrentMeasure;MaximumCurrent;IfcElectricCurrentMeasure;MultipleTarriff;IfcBoolean -Pset_FlowMeterTypeGasMeter;ConnectionSize;IfcPositiveLengthMeasure;MaximumFlowRate;IfcVolumetricFlowRateMeasure;MaximumPressureLoss;IfcPressureMeasure -Pset_FlowMeterTypeOilMeter;ConnectionSize;IfcPositiveLengthMeasure;MaximumFlowRate;IfcVolumetricFlowRateMeasure -Pset_FlowMeterTypeWaterMeter;ConnectionSize;IfcPositiveLengthMeasure;MaximumFlowRate;IfcVolumetricFlowRateMeasure;MaximumPressureLoss;IfcPressureMeasure -Pset_FootingCommon;Reference;IfcIdentifier;LoadBearing;IfcBoolean -Pset_FurnitureTypeChair;SeatingHeight;IfcPositiveLengthMeasure;HighestSeatingHeight;IfcPositiveLengthMeasure;LowestSeatingHeight;IfcPositiveLengthMeasure -Pset_FurnitureTypeCommon;Reference;IfcIdentifier;Style;IfcLabel;NominalHeight;IfcPositiveLengthMeasure;NominalLength;IfcPositiveLengthMeasure;NominalDepth;IfcPositiveLengthMeasure;MainColor;IfcLabel;IsBuiltIn;IfcBoolean -Pset_FurnitureTypeDesk;WorksurfaceArea;IfcAreaMeasure -Pset_FurnitureTypeFileCabinet;WithLock;IfcBoolean -Pset_FurnitureTypeTable;WorksurfaceArea;IfcAreaMeasure;NumberOfChairs;IfcInteger -Pset_HeatExchangerTypeCommon;Reference;IfcIdentifier -Pset_HeatExchangerTypePlate;NumberOfPlates;IfcInteger -Pset_HumidifierTypeCommon;Reference;IfcIdentifier;Weight;IfcMassMeasure;NominalMoistureGain;IfcMassFlowRateMeasure;NominalAirFlowRate;IfcVolumetricFlowRateMeasure;WaterRequirement;IfcVolumetricFlowRateMeasure;SaturationEfficiencyCurve;IfcNormalisedRatioMeasure;AirPressureDropCurve;IfcPressureMeasure -Pset_InterceptorTypeCommon;Reference;IfcIdentifier;NominalBodyLength;IfcPositiveLengthMeasure;NominalBodyWidth;IfcPositiveLengthMeasure;NominalBodyDepth;IfcPositiveLengthMeasure;InletConnectionSize;IfcPositiveLengthMeasure;OutletConnectionSize;IfcPositiveLengthMeasure;CoverLength;IfcPositiveLengthMeasure;CoverWidth;IfcPositiveLengthMeasure;VentilatingPipeSize;IfcPositiveLengthMeasure -Pset_JunctionBoxTypeCommon;Reference;IfcIdentifier;NumberOfGangs;IfcInteger;ClearDepth;IfcPositiveLengthMeasure;IsExternal;IfcBoolean;IP_Code;IfcLabel -Pset_LampTypeCommon;Reference;IfcIdentifier;ContributedLuminousFlux;IfcLuminousFluxMeasure;LightEmitterNominalPower;IfcPowerMeasure;LampMaintenanceFactor;IfcReal;ColorAppearance;IfcLabel;Spectrum;IfcNumericMeasure;ColorTemperature;IfcThermodynamicTemperatureMeasure;ColorRenderingIndex;IfcInteger -Pset_LandRegistration;LandID;IfcIdentifier;IsPermanentID;IfcBoolean;LandTitleID;IfcIdentifier -Pset_LightFixtureTypeCommon;Reference;IfcIdentifier;NumberOfSources;IfcInteger;TotalWattage;IfcPowerMeasure;MaintenanceFactor;IfcReal;MaximumPlenumSensibleLoad;IfcPowerMeasure;MaximumSpaceSensibleLoad;IfcPowerMeasure;SensibleLoadToRadiant;IfcPositiveRatioMeasure -Pset_LightFixtureTypeSecurityLighting;FixtureHeight;IfcPositiveLengthMeasure -Pset_ManufacturerOccurrence;AcquisitionDate;IfcDate;BarCode;IfcIdentifier;SerialNumber;IfcIdentifier;BatchReference;IfcIdentifier -Pset_ManufacturerTypeInformation;GlobalTradeItemNumber;IfcIdentifier;ArticleNumber;IfcIdentifier;ModelReference;IfcLabel;ModelLabel;IfcLabel;Manufacturer;IfcLabel;ProductionYear;IfcLabel -Pset_MaterialCombustion;SpecificHeatCapacity;IfcSpecificHeatCapacityMeasure;N20Content;IfcPositiveRatioMeasure;COContent;IfcPositiveRatioMeasure;CO2Content;IfcPositiveRatioMeasure -Pset_MaterialCommon;MolecularWeight;IfcMolecularWeightMeasure;Porosity;IfcNormalisedRatioMeasure;MassDensity;IfcMassDensityMeasure -Pset_MaterialConcrete;CompressiveStrength;IfcPressureMeasure;MaxAggregateSize;IfcPositiveLengthMeasure;AdmixturesDescription;IfcText;Workability;IfcText;WaterImpermeability;IfcText;ProtectivePoreRatio;IfcNormalisedRatioMeasure -Pset_MaterialEnergy;ViscosityTemperatureDerivative;IfcReal;MoistureCapacityThermalGradient;IfcReal;ThermalConductivityTemperatureDerivative;IfcReal;SpecificHeatTemperatureDerivative;IfcReal;VisibleRefractionIndex;IfcReal;SolarRefractionIndex;IfcReal;GasPressure;IfcPressureMeasure -Pset_MaterialFuel;CombustionTemperature;IfcThermodynamicTemperatureMeasure;CarbonContent;IfcPositiveRatioMeasure;LowerHeatingValue;IfcHeatingValueMeasure;HigherHeatingValue;IfcHeatingValueMeasure -Pset_MaterialHygroscopic;UpperVaporResistanceFactor;IfcPositiveRatioMeasure;LowerVaporResistanceFactor;IfcPositiveRatioMeasure;IsothermalMoistureCapacity;IfcIsothermalMoistureCapacityMeasure;VaporPermeability;IfcVaporPermeabilityMeasure;MoistureDiffusivity;IfcMoistureDiffusivityMeasure -Pset_MaterialMechanical;DynamicViscosity;IfcDynamicViscosityMeasure;YoungModulus;IfcModulusOfElasticityMeasure;ShearModulus;IfcModulusOfElasticityMeasure;PoissonRatio;IfcPositiveRatioMeasure;ThermalExpansionCoefficient;IfcThermalExpansionCoefficientMeasure -Pset_MaterialOptical;VisibleTransmittance;IfcPositiveRatioMeasure;SolarTransmittance;IfcPositiveRatioMeasure;ThermalIrTransmittance;IfcPositiveRatioMeasure;ThermalIrEmissivityBack;IfcPositiveRatioMeasure;ThermalIrEmissivityFront;IfcPositiveRatioMeasure;VisibleReflectanceBack;IfcPositiveRatioMeasure;VisibleReflectanceFront;IfcPositiveRatioMeasure;SolarReflectanceBack;IfcPositiveRatioMeasure;SolarReflectanceFront;IfcPositiveRatioMeasure -Pset_MaterialSteel;YieldStress;IfcPressureMeasure;UltimateStress;IfcPressureMeasure;UltimateStrain;IfcPositiveRatioMeasure;HardeningModule;IfcModulusOfElasticityMeasure;ProportionalStress;IfcPressureMeasure;PlasticStrain;IfcPositiveRatioMeasure;Relaxations;IfcNormalisedRatioMeasure -Pset_MaterialThermal;SpecificHeatCapacity;IfcSpecificHeatCapacityMeasure;BoilingPoint;IfcThermodynamicTemperatureMeasure;FreezingPoint;IfcThermodynamicTemperatureMeasure;ThermalConductivity;IfcThermalConductivityMeasure -Pset_MaterialWater;IsPotable;IfcBoolean;Hardness;IfcIonConcentrationMeasure;AlkalinityConcentration;IfcIonConcentrationMeasure;AcidityConcentration;IfcIonConcentrationMeasure;ImpuritiesContent;IfcNormalisedRatioMeasure;DissolvedSolidsContent;IfcNormalisedRatioMeasure;PHLevel;IfcPHMeasure -Pset_MaterialWood;Species;IfcLabel;StrengthGrade;IfcLabel;AppearanceGrade;IfcLabel;Layup;IfcLabel;Layers;IfcInteger;Plies;IfcInteger;MoistureContent;IfcPositiveRatioMeasure;DimensionalChangeCoefficient;IfcPositiveRatioMeasure;ThicknessSwelling;IfcPositiveRatioMeasure -Pset_MaterialWoodBasedBeam;ApplicableStructuralDesignMethod;IfcLabel;InPlane;IfcModulusOfElasticityMeasure;YoungModulusMin;IfcModulusOfElasticityMeasure;YoungModulusPerp;IfcModulusOfElasticityMeasure;YoungModulusPerpMin;IfcModulusOfElasticityMeasure;ShearModulus;IfcModulusOfElasticityMeasure;ShearModulusMin;IfcModulusOfElasticityMeasure;BendingStrength;IfcPressureMeasure;TensileStrength;IfcPressureMeasure;TensileStrengthPerp;IfcPressureMeasure;CompStrength;IfcPressureMeasure;CompStrengthPerp;IfcPressureMeasure;RaisedCompStrengthPerp;IfcPressureMeasure;ShearStrength;IfcPressureMeasure;TorsionalStrength;IfcPressureMeasure;ReferenceDepth;IfcPositiveLengthMeasure;InstabilityFactors;IfcPositiveRatioMeasure;InPlaneNegative;IfcModulusOfElasticityMeasure;YoungModulusMin;IfcModulusOfElasticityMeasure;YoungModulusPerp;IfcModulusOfElasticityMeasure;YoungModulusPerpMin;IfcModulusOfElasticityMeasure;ShearModulus;IfcModulusOfElasticityMeasure;ShearModulusMin;IfcModulusOfElasticityMeasure;BendingStrength;IfcPressureMeasure;TensileStrength;IfcPressureMeasure;TensileStrengthPerp;IfcPressureMeasure;CompStrength;IfcPressureMeasure;CompStrengthPerp;IfcPressureMeasure;RaisedCompStrengthPerp;IfcPressureMeasure;ShearStrength;IfcPressureMeasure;TorsionalStrength;IfcPressureMeasure;ReferenceDepth;IfcPositiveLengthMeasure;InstabilityFactors;IfcPositiveRatioMeasure;OutOfPlane;IfcModulusOfElasticityMeasure;YoungModulusMin;IfcModulusOfElasticityMeasure;YoungModulusPerp;IfcModulusOfElasticityMeasure;YoungModulusPerpMin;IfcModulusOfElasticityMeasure;ShearModulus;IfcModulusOfElasticityMeasure;ShearModulusMin;IfcModulusOfElasticityMeasure;BendingStrength;IfcPressureMeasure;TensileStrength;IfcPressureMeasure;TensileStrengthPerp;IfcPressureMeasure;CompStrength;IfcPressureMeasure;CompStrengthPerp;IfcPressureMeasure;RaisedCompStrengthPerp;IfcPressureMeasure;ShearStrength;IfcPressureMeasure;TorsionalStrength;IfcPressureMeasure;ReferenceDepth;IfcPositiveLengthMeasure;InstabilityFactors;IfcPositiveRatioMeasure -Pset_MaterialWoodBasedPanel;ApplicableStructuralDesignMethod;IfcLabel;InPlane;IfcModulusOfElasticityMeasure;YoungModulusTension;IfcModulusOfElasticityMeasure;YoungModulusCompression;IfcModulusOfElasticityMeasure;ShearModulus;IfcModulusOfElasticityMeasure;BendingStrength;IfcPressureMeasure;CompressiveStrength;IfcPressureMeasure;TensileStrength;IfcPressureMeasure;ShearStrength;IfcPressureMeasure;BearingStrength;IfcPressureMeasure;RaisedCompressiveStrength;IfcPressureMeasure;ReferenceDepth;IfcPositiveLengthMeasure;OutOfPlane;IfcModulusOfElasticityMeasure;YoungModulusTension;IfcModulusOfElasticityMeasure;YoungModulusCompression;IfcModulusOfElasticityMeasure;ShearModulus;IfcModulusOfElasticityMeasure;BendingStrength;IfcPressureMeasure;CompressiveStrength;IfcPressureMeasure;TensileStrength;IfcPressureMeasure;ShearStrength;IfcPressureMeasure;BearingStrength;IfcPressureMeasure;RaisedCompressiveStrength;IfcPressureMeasure;ReferenceDepth;IfcPositiveLengthMeasure;OutOfPlaneNegative;IfcModulusOfElasticityMeasure;YoungModulusTension;IfcModulusOfElasticityMeasure;YoungModulusCompression;IfcModulusOfElasticityMeasure;ShearModulus;IfcModulusOfElasticityMeasure;BendingStrength;IfcPressureMeasure;CompressiveStrength;IfcPressureMeasure;TensileStrength;IfcPressureMeasure;ShearStrength;IfcPressureMeasure;BearingStrength;IfcPressureMeasure;RaisedCompressiveStrength;IfcPressureMeasure;ReferenceDepth;IfcPositiveLengthMeasure -Pset_MechanicalFastenerAnchorBolt;AnchorBoltLength;IfcPositiveLengthMeasure;AnchorBoltDiameter;IfcPositiveLengthMeasure;AnchorBoltThreadLength;IfcPositiveLengthMeasure;AnchorBoltProtrusionLength;IfcPositiveLengthMeasure -Pset_MechanicalFastenerBolt;ThreadDiameter;IfcPositiveLengthMeasure;ThreadLength;IfcPositiveLengthMeasure;NutsCount;IfcCountMeasure;WashersCount;IfcCountMeasure;HeadShape;IfcLabel;KeyShape;IfcLabel;NutShape;IfcLabel;WasherShape;IfcLabel -Pset_MedicalDeviceTypeCommon;Reference;IfcIdentifier -Pset_MemberCommon;Reference;IfcIdentifier;Span;IfcPositiveLengthMeasure;Slope;IfcPlaneAngleMeasure;Roll;IfcPlaneAngleMeasure;IsExternal;IfcBoolean;ThermalTransmittance;IfcThermalTransmittanceMeasure;LoadBearing;IfcBoolean;FireRating;IfcLabel -Pset_MotorConnectionTypeCommon;Reference;IfcIdentifier -Pset_OpeningElementCommon;Reference;IfcIdentifier;Purpose;IfcLabel;FireExit;IfcBoolean;ProtectedOpening;IfcBoolean -Pset_OutletTypeCommon;Reference;IfcIdentifier;IsPluggableOutlet;IfcLogical;NumberOfSockets;IfcInteger -Pset_OutsideDesignCriteria;HeatingDryBulb;IfcThermodynamicTemperatureMeasure;HeatingWetBulb;IfcThermodynamicTemperatureMeasure;HeatingDesignDay;IfcDateTime;CoolingDryBulb;IfcThermodynamicTemperatureMeasure;CoolingWetBulb;IfcThermodynamicTemperatureMeasure;CoolingDesignDay;IfcDateTime;WeatherDataStation;IfcText;WeatherDataDate;IfcDateTime;PrevailingWindDirection;IfcPlaneAngleMeasure;PrevailingWindVelocity;IfcLinearVelocityMeasure -Pset_PackingInstructions;SpecialInstructions;IfcText -Pset_Permit;EscortRequirement;IfcBoolean;StartDate;IfcDateTime;EndDate;IfcDateTime;SpecialRequirements;IfcText -Pset_PileCommon;Reference;IfcIdentifier;LoadBearing;IfcBoolean -Pset_PipeConnectionFlanged;FlangeTable;IfcLabel;FlangeStandard;IfcLabel;BoreSize;IfcPositiveLengthMeasure;FlangeDiameter;IfcPositiveLengthMeasure;FlangeThickness;IfcPositiveLengthMeasure;NumberOfBoltholes;IfcInteger;BoltSize;IfcPositiveLengthMeasure;BoltholePitch;IfcPositiveLengthMeasure -Pset_PipeFittingOccurrence;InteriorRoughnessCoefficient;IfcPositiveLengthMeasure;Color;IfcLabel -Pset_PipeFittingTypeBend;BendAngle;IfcPositivePlaneAngleMeasure;BendRadius;IfcPositiveLengthMeasure -Pset_PipeFittingTypeCommon;Reference;IfcIdentifier;PressureClass;IfcPressureMeasure;PressureRange;IfcPressureMeasure;TemperatureRange;IfcThermodynamicTemperatureMeasure;FittingLossFactor;IfcReal -Pset_PipeFittingTypeJunction;JunctionLeftAngle;IfcPositivePlaneAngleMeasure;JunctionLeftRadius;IfcPositiveLengthMeasure;JunctionRightAngle;IfcPositivePlaneAngleMeasure;JunctionRightRadius;IfcPositiveLengthMeasure -Pset_PipeSegmentOccurrence;InteriorRoughnessCoefficient;IfcPositiveLengthMeasure;Color;IfcLabel;Gradient;IfcPositiveRatioMeasure;InvertElevation;IfcLengthMeasure -Pset_PipeSegmentTypeCommon;Reference;IfcIdentifier;WorkingPressure;IfcPressureMeasure;PressureRange;IfcPressureMeasure;TemperatureRange;IfcThermodynamicTemperatureMeasure;NominalDiameter;IfcPositiveLengthMeasure;InnerDiameter;IfcPositiveLengthMeasure;OuterDiameter;IfcPositiveLengthMeasure -Pset_PipeSegmentTypeCulvert;InternalWidth;IfcLengthMeasure;ClearDepth;IfcLengthMeasure -Pset_PipeSegmentTypeGutter;Slope;IfcPlaneAngleMeasure;FlowRating;IfcVolumetricFlowRateMeasure -Pset_PlateCommon;Reference;IfcIdentifier;AcousticRating;IfcLabel;IsExternal;IfcBoolean;ThermalTransmittance;IfcThermalTransmittanceMeasure;LoadBearing;IfcBoolean;FireRating;IfcLabel -Pset_PrecastConcreteElementFabrication;TypeDesignator;IfcLabel;ProductionLotId;IfcIdentifier;SerialNumber;IfcIdentifier;PieceMark;IfcLabel;AsBuiltLocationNumber;IfcLabel;ActualProductionDate;IfcDateTime;ActualErectionDate;IfcDateTime -Pset_PrecastConcreteElementGeneral;TypeDesignator;IfcLabel;CornerChamfer;IfcPositiveLengthMeasure;ManufacturingToleranceClass;IfcLabel;FormStrippingStrength;IfcPressureMeasure;LiftingStrength;IfcPressureMeasure;ReleaseStrength;IfcPressureMeasure;MinimumAllowableSupportLength;IfcPositiveLengthMeasure;InitialTension;IfcPressureMeasure;TendonRelaxation;IfcPositiveRatioMeasure;TransportationStrength;IfcPressureMeasure;SupportDuringTransportDescription;IfcText;HollowCorePlugging;IfcLabel;CamberAtMidspan;IfcRatioMeasure;BatterAtStart;IfcPlaneAngleMeasure;BatterAtEnd;IfcPlaneAngleMeasure;Twisting;IfcPlaneAngleMeasure;Shortening;IfcRatioMeasure;PieceMark;IfcLabel;DesignLocationNumber;IfcLabel -Pset_PrecastSlab;TypeDesignator;IfcLabel;ToppingType;IfcLabel;EdgeDistanceToFirstAxis;IfcPositiveLengthMeasure;DistanceBetweenComponentAxes;IfcPositiveLengthMeasure;AngleToFirstAxis;IfcPlaneAngleMeasure;AngleBetweenComponentAxes;IfcPlaneAngleMeasure;NominalThickness;IfcPositiveLengthMeasure;NominalToppingThickness;IfcPositiveLengthMeasure -Pset_ProfileArbitraryDoubleT;OverallWidth;IfcPositiveLengthMeasure;LeftFlangeWidth;IfcPositiveLengthMeasure;RightFlangeWidth;IfcPositiveLengthMeasure;OverallDepth;IfcPositiveLengthMeasure;FlangeDepth;IfcPositiveLengthMeasure;FlangeDraft;IfcNonNegativeLengthMeasure;FlangeChamfer;IfcNonNegativeLengthMeasure;FlangeBaseFillet;IfcNonNegativeLengthMeasure;FlangeTopFillet;IfcNonNegativeLengthMeasure;StemBaseWidth;IfcPositiveLengthMeasure;StemTopWidth;IfcPositiveLengthMeasure;StemBaseChamfer;IfcNonNegativeLengthMeasure;StemTopChamfer;IfcNonNegativeLengthMeasure;StemBaseFillet;IfcNonNegativeLengthMeasure;StemTopFillet;IfcNonNegativeLengthMeasure -Pset_ProfileArbitraryHollowCore;OverallWidth;IfcPositiveLengthMeasure;OverallDepth;IfcPositiveLengthMeasure;EdgeDraft;IfcNonNegativeLengthMeasure;DraftBaseOffset;IfcNonNegativeLengthMeasure;DraftSideOffset;IfcNonNegativeLengthMeasure;BaseChamfer;IfcNonNegativeLengthMeasure;KeyDepth;IfcNonNegativeLengthMeasure;KeyHeight;IfcNonNegativeLengthMeasure;KeyOffset;IfcNonNegativeLengthMeasure;BottomCover;IfcPositiveLengthMeasure;CoreSpacing;IfcPositiveLengthMeasure;CoreBaseHeight;IfcPositiveLengthMeasure;CoreMiddleHeight;IfcPositiveLengthMeasure;CoreTopHeight;IfcPositiveLengthMeasure;CoreBaseWidth;IfcPositiveLengthMeasure;CoreTopWidth;IfcPositiveLengthMeasure;CenterCoreSpacing;IfcPositiveLengthMeasure;CenterCoreBaseHeight;IfcPositiveLengthMeasure;CenterCoreMiddleHeight;IfcPositiveLengthMeasure;CenterCoreTopHeight;IfcPositiveLengthMeasure;CenterCoreBaseWidth;IfcPositiveLengthMeasure;CenterCoreTopWidth;IfcPositiveLengthMeasure;NumberOfCores;IfcCountMeasure -Pset_ProfileMechanical;MassPerLength;IfcMassPerLengthMeasure;CrossSectionArea;IfcAreaMeasure;Perimeter;IfcPositiveLengthMeasure;MinimumPlateThickness;IfcPositiveLengthMeasure;MaximumPlateThickness;IfcPositiveLengthMeasure;CentreOfGravityInX;IfcLengthMeasure;CentreOfGravityInY;IfcLengthMeasure;ShearCentreZ;IfcLengthMeasure;ShearCentreY;IfcLengthMeasure;MomentOfInertiaY;IfcMomentOfInertiaMeasure;MomentOfInertiaZ;IfcMomentOfInertiaMeasure;MomentOfInertiaYZ;IfcMomentOfInertiaMeasure;TorsionalConstantX;IfcMomentOfInertiaMeasure;WarpingConstant;IfcWarpingConstantMeasure;ShearDeformationAreaZ;IfcAreaMeasure;ShearDeformationAreaY;IfcAreaMeasure;MaximumSectionModulusY;IfcSectionModulusMeasure;MinimumSectionModulusY;IfcSectionModulusMeasure;MaximumSectionModulusZ;IfcSectionModulusMeasure;MinimumSectionModulusZ;IfcSectionModulusMeasure;TorsionalSectionModulus;IfcSectionModulusMeasure;ShearAreaZ;IfcAreaMeasure;ShearAreaY;IfcAreaMeasure;PlasticShapeFactorY;IfcPositiveRatioMeasure;PlasticShapeFactorZ;IfcPositiveRatioMeasure -Pset_ProjectOrderChangeOrder;ReasonForChange;IfcText;BudgetSource;IfcText -Pset_ProjectOrderMaintenanceWorkOrder;ProductDescription;IfcText;WorkTypeRequested;IfcText;ContractualType;IfcText;IfNotAccomplished;IfcText;ScheduledFrequency;IfcTimeMeasure -Pset_ProjectOrderMoveOrder;SpecialInstructions;IfcText -Pset_ProjectOrderPurchaseOrder;IsFOB;IfcBoolean;ShipMethod;IfcText -Pset_ProjectOrderWorkOrder;ProductDescription;IfcText;WorkTypeRequested;IfcText;ContractualType;IfcText;IfNotAccomplished;IfcText -Pset_PropertyAgreement;Identifier;IfcIdentifier;Version;IfcLabel;VersionDate;IfcDate;PropertyName;IfcLabel;CommencementDate;IfcDate;TerminationDate;IfcDate;Duration;IfcDuration;Options;IfcText;ConditionCommencement;IfcText;Restrictions;IfcText;ConditionTermination;IfcText -Pset_ProtectiveDeviceBreakerUnitI2TCurve;NominalCurrent;IfcElectricCurrentMeasure;BreakerUnitCurve;IfcReal -Pset_ProtectiveDeviceBreakerUnitI2TFuseCurve;BreakerUnitFuseMeltingCurve;IfcReal;BreakerUnitFuseBreakingingCurve;IfcReal -Pset_ProtectiveDeviceBreakerUnitIPICurve;NominalCurrent;IfcElectricCurrentMeasure;BreakerUnitIPICurve;IfcElectricCurrentMeasure -Pset_ProtectiveDeviceBreakerUnitTypeMCB;PowerLoss;IfcPowerMeasure;NominalCurrents;IfcElectricCurrentMeasure;ICU60947;IfcElectricCurrentMeasure;ICS60947;IfcElectricCurrentMeasure;ICN60898;IfcElectricCurrentMeasure;ICS60898;IfcElectricCurrentMeasure -Pset_ProtectiveDeviceBreakerUnitTypeMotorProtection;PerformanceClasses;IfcLabel;ICU60947;IfcElectricCurrentMeasure;ICS60947;IfcElectricCurrentMeasure;ICW60947;IfcElectricCurrentMeasure;ICM60947;IfcElectricCurrentMeasure -Pset_ProtectiveDeviceOccurrence;LongTimeFunction;IfcBoolean;ShortTimeFunction;IfcBoolean;ShortTimei2tFunction;IfcBoolean;GroundFaultFunction;IfcBoolean;GroundFaulti2tFunction;IfcBoolean;LongTimeCurrentSetValue;IfcElectricCurrentMeasure;ShortTimeCurrentSetValue;IfcElectricCurrentMeasure;InstantaneousCurrentSetValue;IfcElectricCurrentMeasure;GroundFaultCurrentSetValue;IfcElectricCurrentMeasure;LongTimeDelay;IfcTimeMeasure;ShortTimeTrippingTime;IfcTimeMeasure;InstantaneousTrippingTime;IfcTimeMeasure;GroundFaultTrippingTime;IfcTimeMeasure -Pset_ProtectiveDeviceTrippingCurve;TrippingCurve;IfcTimeMeasure -Pset_ProtectiveDeviceTrippingFunctionGCurve;IsSelectable;IfcBoolean;NominalCurrentAdjusted;IfcBoolean;ExternalAdjusted;IfcBoolean;ReleaseCurrent;IfcElectricCurrentMeasure;ReleaseTime;IfcTimeMeasure;CurrentTolerance1;IfcPositiveRatioMeasure;CurrentToleranceLimit1;IfcTimeMeasure;CurrentTolerance2;IfcPositiveRatioMeasure;IsCurrentTolerancePositiveOnly;IfcBoolean;TimeTolerance1;IfcPositiveRatioMeasure;TimeToleranceLimit1;IfcElectricCurrentMeasure;TimeTolerance2;IfcPositiveRatioMeasure;IsTimeTolerancePositiveOnly;IfcBoolean;ReleaseCurrentI2tStart;IfcElectricCurrentMeasure;ReleaseTimeI2tStart;IfcTimeMeasure;ReleaseCurrentI2tEnd;IfcElectricCurrentMeasure;ReleaseTimeI2tEnd;IfcTimeMeasure -Pset_ProtectiveDeviceTrippingFunctionICurve;IsSelectable;IfcBoolean;NominalCurrentAdjusted;IfcBoolean;ReleaseCurrent;IfcElectricCurrentMeasure;ReleaseTime;IfcTimeMeasure;CurrentTolerance1;IfcPositiveRatioMeasure;CurrentToleranceLimit1;IfcTimeMeasure;CurrentTolerance2;IfcPositiveRatioMeasure;IsCurrentTolerancePositiveOnly;IfcBoolean;TimeTolerance1;IfcPositiveRatioMeasure;TimeToleranceLimit1;IfcElectricCurrentMeasure;TimeTolerance2;IfcPositiveRatioMeasure;IsTimeTolerancePositiveOnly;IfcBoolean;MaxAdjustmentX_ICS;IfcElectricCurrentMeasure;IsOffWhenSFunctionOn;IfcBoolean -Pset_ProtectiveDeviceTrippingFunctionLCurve;IsSelectable;IfcBoolean;UpperCurrent1;IfcElectricCurrentMeasure;UpperCurrent2;IfcElectricCurrentMeasure;UpperTime1;IfcTimeMeasure;UpperTime2;IfcTimeMeasure;LowerCurrent1;IfcElectricCurrentMeasure;LowerCurrent2;IfcElectricCurrentMeasure;LowerTime1;IfcTimeMeasure;LowerTime2;IfcTimeMeasure -Pset_ProtectiveDeviceTrippingFunctionSCurve;IsSelectable;IfcBoolean;NominalCurrentAdjusted;IfcBoolean;ReleaseCurrent;IfcElectricCurrentMeasure;ReleaseTime;IfcTimeMeasure;CurrentTolerance1;IfcPositiveRatioMeasure;CurrentToleranceLimit1;IfcTimeMeasure;CurrentTolerance2;IfcPositiveRatioMeasure;IsCurrentTolerancePositiveOnly;IfcBoolean;TimeTolerance1;IfcPositiveRatioMeasure;TimeToleranceLimit1;IfcElectricCurrentMeasure;TimeTolerance2;IfcPositiveRatioMeasure;IsTimeTolerancePositiveOnly;IfcBoolean;ReleaseCurrentI2tStart;IfcElectricCurrentMeasure;ReleaseTimeI2tStart;IfcTimeMeasure;ReleaseCurrentI2tEnd;IfcElectricCurrentMeasure;ReleaseTimeI2tEnd;IfcTimeMeasure;IsOffWhenLfunctionOn;IfcBoolean -Pset_ProtectiveDeviceTrippingUnitCurrentAdjustment;AdjustmentRange;IfcElectricCurrentMeasure;AdjustmentRangeStepValue;IfcElectricCurrentMeasure;AdjustmentValues;IfcElectricCurrentMeasure;AdjustmentDesignation;IfcLabel -Pset_ProtectiveDeviceTrippingUnitTimeAdjustment;AdjustmentRange;IfcTimeMeasure;AdjustmentRangeStepValue;IfcTimeMeasure;AdjustmentValues;IfcTimeMeasure;AdjustmentDesignation;IfcLabel;CurrentForTimeDelay;IfcTimeMeasure -Pset_ProtectiveDeviceTrippingUnitTypeCommon;Reference;IfcIdentifier;Standard;IfcLabel;UseInDiscrimination;IfcBoolean;AtexVerified;IfcBoolean;OldDevice;IfcBoolean;LimitingTerminalSize;IfcAreaMeasure -Pset_ProtectiveDeviceTrippingUnitTypeElectroMagnetic;I1;IfcReal;I2;IfcReal;T2;IfcTimeMeasure;DefinedTemperature;IfcThermodynamicTemperatureMeasure;TemperatureFactor;IfcRatioMeasure;I4;IfcReal;I5;IfcReal;T5;IfcTimeMeasure;CurveDesignation;IfcLabel -Pset_ProtectiveDeviceTrippingUnitTypeElectronic;NominalCurrents;IfcElectricCurrentMeasure;N_Protection;IfcBoolean;N_Protection_50;IfcBoolean;N_Protection_100;IfcBoolean;N_Protection_Select;IfcBoolean -Pset_ProtectiveDeviceTrippingUnitTypeThermal;I1;IfcReal;I2;IfcReal;T2;IfcTimeMeasure;DefinedTemperature;IfcThermodynamicTemperatureMeasure;TemperatureFactor;IfcRatioMeasure;CurveDesignation;IfcLabel -Pset_ProtectiveDeviceTypeCircuitBreaker;PerformanceClasses;IfcLabel;ICU60947;IfcElectricCurrentMeasure;ICS60947;IfcElectricCurrentMeasure;ICW60947;IfcElectricCurrentMeasure;ICM60947;IfcElectricCurrentMeasure -Pset_ProtectiveDeviceTypeCommon;Reference;IfcIdentifier -Pset_ProtectiveDeviceTypeEarthLeakageCircuitBreaker;Sensitivity;IfcElectricCurrentMeasure -Pset_ProtectiveDeviceTypeFuseDisconnector;IC60269;IfcElectricCurrentMeasure;PowerLoss;IfcPowerMeasure -Pset_ProtectiveDeviceTypeResidualCurrentCircuitBreaker;Sensitivity;IfcElectricCurrentMeasure -Pset_ProtectiveDeviceTypeResidualCurrentSwitch;Sensitivity;IfcElectricCurrentMeasure -Pset_PumpOccurrence;ImpellerDiameter;IfcPositiveLengthMeasure -Pset_PumpTypeCommon;Reference;IfcIdentifier;FlowRateRange;IfcMassFlowRateMeasure;FlowResistanceRange;IfcPressureMeasure;ConnectionSize;IfcPositiveLengthMeasure;TemperatureRange;IfcThermodynamicTemperatureMeasure;NetPositiveSuctionHead;IfcPressureMeasure;NominalRotationSpeed;IfcRotationalFrequencyMeasure -Pset_RailingCommon;Reference;IfcIdentifier;Height;IfcPositiveLengthMeasure;Diameter;IfcPositiveLengthMeasure;IsExternal;IfcBoolean -Pset_RampCommon;Reference;IfcIdentifier;RequiredHeadroom;IfcPositiveLengthMeasure;RequiredSlope;IfcPlaneAngleMeasure;HandicapAccessible;IfcBoolean;HasNonSkidSurface;IfcBoolean;FireExit;IfcBoolean;IsExternal;IfcBoolean;ThermalTransmittance;IfcThermalTransmittanceMeasure;LoadBearing;IfcBoolean;FireRating;IfcLabel -Pset_RampFlightCommon;Reference;IfcIdentifier;Headroom;IfcPositiveLengthMeasure;ClearWidth;IfcPositiveLengthMeasure;Slope;IfcPlaneAngleMeasure;CounterSlope;IfcPlaneAngleMeasure -Pset_ReinforcementBarCountOfIndependentFooting;Description;IfcText;Reference;IfcLabel;XDirectionLowerBarCount;IfcInteger;YDirectionLowerBarCount;IfcInteger;XDirectionUpperBarCount;IfcInteger;YDirectionUpperBarCount;IfcInteger -Pset_ReinforcementBarPitchOfBeam;Description;IfcText;Reference;IfcLabel;StirrupBarPitch;IfcPositiveLengthMeasure;SpacingBarPitch;IfcPositiveLengthMeasure -Pset_ReinforcementBarPitchOfColumn;Description;IfcText;Reference;IfcLabel;HoopBarPitch;IfcPositiveLengthMeasure;XDirectionTieHoopBarPitch;IfcPositiveLengthMeasure;XDirectionTieHoopCount;IfcInteger;YDirectionTieHoopBarPitch;IfcPositiveLengthMeasure;YDirectionTieHoopCount;IfcInteger -Pset_ReinforcementBarPitchOfContinuousFooting;Description;IfcText;Reference;IfcLabel;CrossingUpperBarPitch;IfcPositiveLengthMeasure;CrossingLowerBarPitch;IfcPositiveLengthMeasure -Pset_ReinforcementBarPitchOfSlab;Description;IfcText;Reference;IfcLabel;LongOutsideTopBarPitch;IfcPositiveLengthMeasure;LongInsideCenterTopBarPitch;IfcPositiveLengthMeasure;LongInsideEndTopBarPitch;IfcPositiveLengthMeasure;ShortOutsideTopBarPitch;IfcPositiveLengthMeasure;ShortInsideCenterTopBarPitch;IfcPositiveLengthMeasure;ShortInsideEndTopBarPitch;IfcPositiveLengthMeasure;LongOutsideLowerBarPitch;IfcPositiveLengthMeasure;LongInsideCenterLowerBarPitch;IfcPositiveLengthMeasure;LongInsideEndLowerBarPitch;IfcPositiveLengthMeasure;ShortOutsideLowerBarPitch;IfcPositiveLengthMeasure;ShortInsideCenterLowerBarPitch;IfcPositiveLengthMeasure;ShortInsideEndLowerBarPitch;IfcPositiveLengthMeasure -Pset_ReinforcementBarPitchOfWall;Description;IfcText;Reference;IfcLabel;VerticalBarPitch;IfcPositiveLengthMeasure;HorizontalBarPitch;IfcPositiveLengthMeasure;SpacingBarPitch;IfcPositiveLengthMeasure -Pset_Risk;NatureOfRisk;IfcLabel;SubNatureOfRisk1;IfcLabel;SubNatureOfRisk2;IfcLabel;RiskCause;IfcText;AffectsSurroundings;IfcBoolean;PreventiveMeassures;IfcText -Pset_RoofCommon;Reference;IfcIdentifier;AcousticRating;IfcLabel;IsExternal;IfcBoolean;ThermalTransmittance;IfcThermalTransmittanceMeasure;LoadBearing;IfcBoolean;FireRating;IfcLabel -Pset_SanitaryTerminalTypeBath;DrainSize;IfcPositiveLengthMeasure;HasGrabHandles;IfcBoolean -Pset_SanitaryTerminalTypeBidet;SpilloverLevel;IfcPositiveLengthMeasure;DrainSize;IfcPositiveLengthMeasure -Pset_SanitaryTerminalTypeCistern;CisternCapacity;IfcVolumeMeasure;IsSingleFlush;IfcBoolean;FlushRate;IfcVolumeMeasure;IsAutomaticFlush;IfcBoolean -Pset_SanitaryTerminalTypeCommon;Reference;IfcIdentifier;NominalLength;IfcPositiveLengthMeasure;NominalWidth;IfcPositiveLengthMeasure;NominalDepth;IfcPositiveLengthMeasure;Color;IfcLabel -Pset_SanitaryTerminalTypeSanitaryFountain;DrainSize;IfcPositiveLengthMeasure -Pset_SanitaryTerminalTypeShower;HasTray;IfcBoolean;ShowerHeadDescription;IfcText;DrainSize;IfcPositiveLengthMeasure -Pset_SanitaryTerminalTypeSink;Color;IfcLabel;DrainSize;IfcPositiveLengthMeasure;MountingOffset;IfcLengthMeasure -Pset_SanitaryTerminalTypeToiletPan;SpilloverLevel;IfcPositiveLengthMeasure -Pset_SanitaryTerminalTypeUrinal;SpilloverLevel;IfcPositiveLengthMeasure -Pset_SanitaryTerminalTypeWashHandBasin;DrainSize;IfcPositiveLengthMeasure;MountingOffset;IfcLengthMeasure -Pset_SensorTypeCO2Sensor;SetPointConcentration;IfcPositiveRatioMeasure -Pset_SensorTypeCommon;Reference;IfcIdentifier -Pset_SensorTypeConductanceSensor;SetPointConductance;IfcElectricConductanceMeasure -Pset_SensorTypeContactSensor;SetPointContact;IfcInteger -Pset_SensorTypeFireSensor;FireSensorSetPoint;IfcThermodynamicTemperatureMeasure;AccuracyOfFireSensor;IfcThermodynamicTemperatureMeasure;TimeConstant;IfcTimeMeasure -Pset_SensorTypeFlowSensor;SetPointFlow;IfcVolumetricFlowRateMeasure -Pset_SensorTypeFrostSensor;SetPointFrost;IfcPositiveRatioMeasure -Pset_SensorTypeGasSensor;GasDetected;IfcLabel;SetPointConcentration;IfcPositiveRatioMeasure;CoverageArea;IfcAreaMeasure -Pset_SensorTypeHeatSensor;CoverageArea;IfcAreaMeasure;SetPointTemperature;IfcThermodynamicTemperatureMeasure;RateOfTemperatureRise;IfcTemperatureRateOfChangeMeasure -Pset_SensorTypeHumiditySensor;SetPointHumidity;IfcPositiveRatioMeasure -Pset_SensorTypeIdentifierSensor;SetPointIdentifier;IfcIdentifier -Pset_SensorTypeIonConcentrationSensor;SubstanceDetected;IfcLabel;SetPointConcentration;IfcIonConcentrationMeasure -Pset_SensorTypeLevelSensor;SetPointLevel;IfcPositiveLengthMeasure -Pset_SensorTypeLightSensor;SetPointIlluminance;IfcIlluminanceMeasure -Pset_SensorTypeMoistureSensor;SetPointMoisture;IfcPositiveRatioMeasure -Pset_SensorTypeMovementSensor;SetPointMovement;IfcPositiveRatioMeasure -Pset_SensorTypePHSensor;SetPointPH;IfcPHMeasure -Pset_SensorTypePressureSensor;SetPointPressure;IfcPressureMeasure;IsSwitch;IfcBoolean -Pset_SensorTypeRadiationSensor;SetPointRadiation;IfcPowerMeasure -Pset_SensorTypeRadioactivitySensor;SetPointRadioactivity;IfcRadioActivityMeasure -Pset_SensorTypeSmokeSensor;CoverageArea;IfcAreaMeasure;SetPointConcentration;IfcPositiveRatioMeasure;HasBuiltInAlarm;IfcBoolean -Pset_SensorTypeSoundSensor;SetPointSound;IfcSoundPressureMeasure -Pset_SensorTypeTemperatureSensor;SetPointTemperature;IfcThermodynamicTemperatureMeasure -Pset_SensorTypeWindSensor;SetPointSpeed;IfcLinearVelocityMeasure -Pset_ServiceLife;ServiceLifeDuration;IfcDuration;MeanTimeBetweenFailure;IfcDuration -Pset_ServiceLifeFactors;QualityOfComponents;IfcPositiveRatioMeasure;DesignLevel;IfcPositiveRatioMeasure;WorkExecutionLevel;IfcPositiveRatioMeasure;IndoorEnvironment;IfcPositiveRatioMeasure;OutdoorEnvironment;IfcPositiveRatioMeasure;InUseConditions;IfcPositiveRatioMeasure;MaintenanceLevel;IfcPositiveRatioMeasure -Pset_ShadingDeviceCommon;Reference;IfcIdentifier;MechanicalOperated;IfcBoolean;SolarTransmittance;IfcPositiveRatioMeasure;SolarReflectance;IfcPositiveRatioMeasure;VisibleLightTransmittance;IfcPositiveRatioMeasure;VisibleLightReflectance;IfcPositiveRatioMeasure;ThermalTransmittance;IfcThermalTransmittanceMeasure;IsExternal;IfcBoolean;Roughness;IfcLabel;SurfaceColor;IfcLabel -Pset_SiteCommon;Reference;IfcIdentifier;BuildableArea;IfcAreaMeasure;SiteCoverageRatio;IfcPositiveRatioMeasure;FloorAreaRatio;IfcPositiveRatioMeasure;BuildingHeightLimit;IfcPositiveLengthMeasure;TotalArea;IfcAreaMeasure -Pset_SlabCommon;Reference;IfcIdentifier;AcousticRating;IfcLabel;FireRating;IfcLabel;PitchAngle;IfcPlaneAngleMeasure;Combustible;IfcBoolean;SurfaceSpreadOfFlame;IfcLabel;Compartmentation;IfcBoolean;IsExternal;IfcBoolean;ThermalTransmittance;IfcThermalTransmittanceMeasure;LoadBearing;IfcBoolean -Pset_SolarDeviceTypeCommon;Reference;IfcIdentifier -Pset_SoundAttenuation;SoundFrequency;IfcFrequencyMeasure -Pset_SoundGeneration;SoundCurve;IfcSoundPowerMeasure -Pset_SpaceCommon;Reference;IfcIdentifier;IsExternal;IfcBoolean;GrossPlannedArea;IfcAreaMeasure;NetPlannedArea;IfcAreaMeasure;PubliclyAccessible;IfcBoolean;HandicapAccessible;IfcBoolean -Pset_SpaceCoveringRequirements;FloorCovering;IfcLabel;FloorCoveringThickness;IfcPositiveLengthMeasure;WallCovering;IfcLabel;WallCoveringThickness;IfcPositiveLengthMeasure;CeilingCovering;IfcLabel;CeilingCoveringThickness;IfcPositiveLengthMeasure;SkirtingBoard;IfcLabel;SkirtingBoardHeight;IfcPositiveLengthMeasure;Molding;IfcLabel;MoldingHeight;IfcPositiveLengthMeasure;ConcealedFlooring;IfcBoolean;ConcealedFlooringOffset;IfcNonNegativeLengthMeasure;ConcealedCeiling;IfcBoolean;ConcealedCeilingOffset;IfcNonNegativeLengthMeasure -Pset_SpaceFireSafetyRequirements;FireRiskFactor;IfcLabel;FlammableStorage;IfcBoolean;FireExit;IfcBoolean;SprinklerProtection;IfcBoolean;SprinklerProtectionAutomatic;IfcBoolean;AirPressurization;IfcBoolean -Pset_SpaceHeaterTypeCommon;Reference;IfcIdentifier;BodyMass;IfcMassMeasure;ThermalMassHeatCapacity;IfcReal;OutputCapacity;IfcPowerMeasure;ThermalEfficiency;IfcNormalisedRatioMeasure;NumberOfPanels;IfcInteger;NumberOfSections;IfcInteger -Pset_SpaceHeaterTypeRadiator;TubingLength;IfcPositiveLengthMeasure;WaterContent;IfcMassMeasure -Pset_SpaceLightingRequirements;ArtificialLighting;IfcBoolean;Illuminance;IfcIlluminanceMeasure -Pset_SpaceOccupancyRequirements;OccupancyType;IfcLabel;OccupancyNumber;IfcCountMeasure;OccupancyNumberPeak;IfcCountMeasure;OccupancyTimePerDay;IfcTimeMeasure;AreaPerOccupant;IfcAreaMeasure;MinimumHeadroom;IfcLengthMeasure;IsOutlookDesirable;IfcBoolean -Pset_SpaceParking;ParkingUse;IfcLabel;ParkingUnits;IfcCountMeasure;IsAisle;IfcBoolean;IsOneWay;IfcBoolean -Pset_SpaceThermalDesign;CoolingDesignAirflow;IfcVolumetricFlowRateMeasure;HeatingDesignAirflow;IfcVolumetricFlowRateMeasure;TotalSensibleHeatGain;IfcPowerMeasure;TotalHeatGain;IfcPowerMeasure;TotalHeatLoss;IfcPowerMeasure;CoolingDryBulb;IfcThermodynamicTemperatureMeasure;CoolingRelativeHumidity;IfcPositiveRatioMeasure;HeatingDryBulb;IfcThermodynamicTemperatureMeasure;HeatingRelativeHumidity;IfcPositiveRatioMeasure;VentilationAirFlowrate;IfcVolumetricFlowRateMeasure;ExhaustAirFlowrate;IfcVolumetricFlowRateMeasure;CeilingRAPlenum;IfcBoolean;BoundaryAreaHeatLoss;IfcHeatFluxDensityMeasure -Pset_SpaceThermalLoad;People;IfcPowerMeasure;Lighting;IfcPowerMeasure;EquipmentSensible;IfcPowerMeasure;VentilationIndoorAir;IfcPowerMeasure;VentilationOutdoorAir;IfcPowerMeasure;RecirculatedAir;IfcPowerMeasure;ExhaustAir;IfcPowerMeasure;AirExchangeRate;IfcPowerMeasure;DryBulbTemperature;IfcPowerMeasure;RelativeHumidity;IfcPowerMeasure;InfiltrationSensible;IfcPowerMeasure;TotalSensibleLoad;IfcPowerMeasure;TotalLatentLoad;IfcPowerMeasure;TotalRadiantLoad;IfcPowerMeasure -Pset_SpaceThermalRequirements;SpaceTemperature;IfcThermodynamicTemperatureMeasure;SpaceTemperatureMax;IfcThermodynamicTemperatureMeasure;SpaceTemperatureMin;IfcThermodynamicTemperatureMeasure;SpaceTemperatureSummerMax;IfcThermodynamicTemperatureMeasure;SpaceTemperatureSummerMin;IfcThermodynamicTemperatureMeasure;SpaceTemperatureWinterMax;IfcThermodynamicTemperatureMeasure;SpaceTemperatureWinterMin;IfcThermodynamicTemperatureMeasure;SpaceHumidity;IfcRatioMeasure;SpaceHumidityMax;IfcRatioMeasure;SpaceHumidityMin;IfcRatioMeasure;SpaceHumiditySummer;IfcRatioMeasure;SpaceHumidityWinter;IfcRatioMeasure;DiscontinuedHeating;IfcBoolean;NaturalVentilation;IfcBoolean;NaturalVentilationRate;IfcCountMeasure;MechanicalVentilationRate;IfcCountMeasure;AirConditioning;IfcBoolean;AirConditioningCentral;IfcBoolean -Pset_SpatialZoneCommon;Reference;IfcLabel;IsExternal;IfcBoolean -Pset_StackTerminalTypeCommon;Reference;IfcIdentifier -Pset_StairCommon;Reference;IfcIdentifier;NumberOfRiser;IfcCountMeasure;NumberOfTreads;IfcCountMeasure;RiserHeight;IfcPositiveLengthMeasure;TreadLength;IfcPositiveLengthMeasure;NosingLength;IfcLengthMeasure;WalkingLineOffset;IfcPositiveLengthMeasure;TreadLengthAtOffset;IfcPositiveLengthMeasure;TreadLengthAtInnerSide;IfcPositiveLengthMeasure;WaistThickness;IfcPositiveLengthMeasure;RequiredHeadroom;IfcPositiveLengthMeasure;HandicapAccessible;IfcBoolean;HasNonSkidSurface;IfcBoolean;IsExternal;IfcBoolean;ThermalTransmittance;IfcThermalTransmittanceMeasure;LoadBearing;IfcBoolean;FireRating;IfcLabel;FireExit;IfcBoolean -Pset_StairFlightCommon;Reference;IfcIdentifier;NumberOfRiser;IfcCountMeasure;NumberOfTreads;IfcCountMeasure;RiserHeight;IfcPositiveLengthMeasure;TreadLength;IfcPositiveLengthMeasure;NosingLength;IfcLengthMeasure;WalkingLineOffset;IfcPositiveLengthMeasure;TreadLengthAtOffset;IfcPositiveLengthMeasure;TreadLengthAtInnerSide;IfcPositiveLengthMeasure;Headroom;IfcPositiveLengthMeasure;WaistThickness;IfcPositiveLengthMeasure -Pset_StructuralSurfaceMemberVaryingThickness;Thickness1;IfcPositiveLengthMeasure;Location1Local;IfcLengthMeasure;Location1Global;IfcLengthMeasure;Thickness2;IfcPositiveLengthMeasure;Location2Local;IfcLengthMeasure;Location2Global;IfcLengthMeasure;Thickness3;IfcPositiveLengthMeasure;Location3Local;IfcLengthMeasure;Location3Global;IfcLengthMeasure -Pset_SwitchingDeviceTypeCommon;Reference;IfcIdentifier;NumberOfGangs;IfcInteger;HasLock;IfcBoolean;IsIlluminated;IfcBoolean;Legend;IfcLabel;SetPoint;IfcLabel -Pset_SystemFurnitureElementTypeCommon;IsUsed;IfcBoolean;GroupCode;IfcIdentifier;NominalWidth;IfcPositiveLengthMeasure;NominalHeight;IfcPositiveLengthMeasure;Finishing;IfcLabel -Pset_SystemFurnitureElementTypePanel;HasOpening;IfcBoolean;NominalThickness;IfcPositiveLengthMeasure -Pset_SystemFurnitureElementTypeWorkSurface;UsePurpose;IfcLabel;HangingHeight;IfcPositiveLengthMeasure;NominalThickness;IfcPositiveLengthMeasure;ShapeDescription;IfcLabel -Pset_TankOccurrence;HasLadder;IfcBoolean;HasVisualIndicator;IfcBoolean -Pset_TankTypeCommon;Reference;IfcIdentifier;NominalLengthOrDiameter;IfcPositiveLengthMeasure;NominalWidthOrDiameter;IfcPositiveLengthMeasure;NominalDepth;IfcPositiveLengthMeasure;NominalCapacity;IfcVolumeMeasure;EffectiveCapacity;IfcVolumeMeasure;OperatingWeight;IfcMassMeasure;FirstCurvatureRadius;IfcPositiveLengthMeasure;SecondCurvatureRadius;IfcPositiveLengthMeasure;NumberOfSections;IfcInteger -Pset_TankTypeExpansion;ChargePressure;IfcPressureMeasure;PressureRegulatorSetting;IfcPressureMeasure;ReliefValveSetting;IfcPressureMeasure -Pset_TankTypePreformed;FirstCurvatureRadius;IfcPositiveLengthMeasure;SecondCurvatureRadius;IfcPositiveLengthMeasure -Pset_TankTypePressureVessel;ChargePressure;IfcPressureMeasure;PressureRegulatorSetting;IfcPressureMeasure;ReliefValveSetting;IfcPressureMeasure -Pset_TankTypeSectional;NumberOfSections;IfcInteger;SectionLength;IfcPositiveLengthMeasure;SectionWidth;IfcPositiveLengthMeasure -Pset_ThermalLoadAggregate;TotalCoolingLoad;IfcPowerMeasure;TotalHeatingLoad;IfcPowerMeasure;LightingDiversity;IfcPositiveRatioMeasure;InfiltrationDiversitySummer;IfcPositiveRatioMeasure;InfiltrationDiversityWinter;IfcPositiveRatioMeasure;ApplianceDiversity;IfcPositiveRatioMeasure;LoadSafetyFactor;IfcPositiveRatioMeasure -Pset_ThermalLoadDesignCriteria;OccupancyDiversity;IfcPositiveRatioMeasure;OutsideAirPerPerson;IfcVolumetricFlowRateMeasure;ReceptacleLoadIntensity;IfcReal;AppliancePercentLoadToRadiant;IfcPositiveRatioMeasure;LightingLoadIntensity;IfcReal;LightingPercentLoadToReturnAir;IfcPositiveRatioMeasure -Pset_TransformerTypeCommon;Reference;IfcIdentifier;PrimaryVoltage;IfcElectricVoltageMeasure;SecondaryVoltage;IfcElectricVoltageMeasure;PrimaryCurrent;IfcElectricCurrentMeasure;SecondaryCurrent;IfcElectricCurrentMeasure;PrimaryFrequency;IfcFrequencyMeasure;SecondaryFrequency;IfcFrequencyMeasure;PrimaryApparentPower;IfcPowerMeasure;SecondaryApparentPower;IfcPowerMeasure;MaximumApparentPower;IfcPowerMeasure;ShortCircuitVoltage;IfcComplexNumber;RealImpedanceRatio;IfcRatioMeasure;ImaginaryImpedanceRatio;IfcRatioMeasure;IsNeutralPrimaryTerminalAvailable;IfcBoolean;IsNeutralSecondaryTerminalAvailable;IfcBoolean -Pset_TransportElementCommon;Reference;IfcIdentifier;CapacityPeople;IfcCountMeasure;CapacityWeight;IfcMassMeasure;FireExit;IfcBoolean -Pset_TransportElementElevator;FireFightingLift;IfcBoolean;ClearWidth;IfcPositiveLengthMeasure;ClearDepth;IfcPositiveLengthMeasure;ClearHeight;IfcPositiveLengthMeasure -Pset_TubeBundleTypeCommon;Reference;IfcIdentifier;NumberOfRows;IfcInteger;StaggeredRowSpacing;IfcPositiveLengthMeasure;InLineRowSpacing;IfcPositiveLengthMeasure;NumberOfCircuits;IfcInteger;FoulingFactor;IfcThermalResistanceMeasure;ThermalConductivity;IfcThermalConductivityMeasure;Length;IfcPositiveLengthMeasure;Volume;IfcVolumeMeasure;NominalDiameter;IfcPositiveLengthMeasure;OutsideDiameter;IfcPositiveLengthMeasure;InsideDiameter;IfcPositiveLengthMeasure;HorizontalSpacing;IfcPositiveLengthMeasure;VerticalSpacing;IfcPositiveLengthMeasure;HasTurbulator;IfcBoolean -Pset_TubeBundleTypeFinned;Spacing;IfcPositiveLengthMeasure;Thickness;IfcPositiveLengthMeasure;ThermalConductivity;IfcThermalConductivityMeasure;Length;IfcPositiveLengthMeasure;Height;IfcPositiveLengthMeasure;Diameter;IfcPositiveLengthMeasure;FinCorrugatedType;IfcLabel;HasCoating;IfcBoolean -Pset_UnitaryControlElementTypeCommon;Reference;IfcIdentifier;Mode;IfcLabel -Pset_UnitaryControlElementTypeThermostat;TemperatureSetPoint;IfcThermodynamicTemperatureMeasure -Pset_UnitaryEquipmentTypeAirConditioningUnit;SensibleCoolingCapacity;IfcPowerMeasure;LatentCoolingCapacity;IfcPowerMeasure;CoolingEfficiency;IfcPositiveRatioMeasure;HeatingCapacity;IfcPowerMeasure;HeatingEfficiency;IfcPositiveRatioMeasure;CondenserFlowrate;IfcVolumetricFlowRateMeasure;CondenserEnteringTemperature;IfcThermodynamicTemperatureMeasure;CondenserLeavingTemperature;IfcThermodynamicTemperatureMeasure;OutsideAirFlowrate;IfcVolumetricFlowRateMeasure -Pset_UnitaryEquipmentTypeAirHandler;DualDeck;IfcBoolean -Pset_UnitaryEquipmentTypeCommon;Reference;IfcIdentifier -Pset_ValveTypeAirRelease;IsAutomatic;IfcBoolean -Pset_ValveTypeCommon;Reference;IfcIdentifier;Size;IfcPositiveLengthMeasure;TestPressure;IfcPressureMeasure;WorkingPressure;IfcPressureMeasure;FlowCoefficient;IfcReal;CloseOffRating;IfcPressureMeasure -Pset_ValveTypeDrawOffCock;HasHoseUnion;IfcBoolean -Pset_ValveTypeFaucet;Finish;IfcText;FaucetTopDescription;IfcText -Pset_ValveTypeFlushing;FlushingRate;IfcVolumetricFlowRateMeasure;HasIntegralShutOffDevice;IfcBoolean;IsHighPressure;IfcBoolean -Pset_ValveTypeGasTap;HasHoseUnion;IfcBoolean -Pset_ValveTypeIsolating;IsNormallyOpen;IfcBoolean -Pset_ValveTypeMixing;OutletConnectionSize;IfcPositiveLengthMeasure -Pset_ValveTypePressureReducing;UpstreamPressure;IfcPressureMeasure;DownstreamPressure;IfcPressureMeasure -Pset_ValveTypePressureRelief;ReliefPressure;IfcPressureMeasure -Pset_VibrationIsolatorTypeCommon;Reference;IfcIdentifier;VibrationTransmissibility;IfcPositiveRatioMeasure;IsolatorStaticDeflection;IfcLengthMeasure;IsolatorCompressibility;IfcRatioMeasure;MaximumSupportedWeight;IfcMassMeasure;NominalHeight;IfcPositiveLengthMeasure -Pset_WallCommon;Reference;IfcIdentifier;AcousticRating;IfcLabel;FireRating;IfcLabel;Combustible;IfcBoolean;SurfaceSpreadOfFlame;IfcLabel;ThermalTransmittance;IfcThermalTransmittanceMeasure;IsExternal;IfcBoolean;LoadBearing;IfcBoolean;ExtendToStructure;IfcBoolean;Compartmentation;IfcBoolean -Pset_Warranty;WarrantyIdentifier;IfcIdentifier;WarrantyStartDate;IfcDate;WarrantyEndDate;IfcDate;IsExtendedWarranty;IfcBoolean;WarrantyPeriod;IfcDuration;WarrantyContent;IfcText;PointOfContact;IfcLabel;Exclusions;IfcText -Pset_WasteTerminalTypeCommon;Reference;IfcIdentifier -Pset_WasteTerminalTypeFloorTrap;NominalBodyLength;IfcPositiveLengthMeasure;NominalBodyWidth;IfcPositiveLengthMeasure;NominalBodyDepth;IfcPositiveLengthMeasure;IsForSullageWater;IfcBoolean;SpilloverLevel;IfcPositiveLengthMeasure;HasStrainer;IfcBoolean;OutletConnectionSize;IfcPositiveLengthMeasure;InletConnectionSize;IfcPositiveLengthMeasure;CoverLength;IfcPositiveLengthMeasure;CoverWidth;IfcPositiveLengthMeasure -Pset_WasteTerminalTypeFloorWaste;NominalBodyLength;IfcPositiveLengthMeasure;NominalBodyWidth;IfcPositiveLengthMeasure;NominalBodyDepth;IfcPositiveLengthMeasure;OutletConnectionSize;IfcPositiveLengthMeasure;CoverLength;IfcPositiveLengthMeasure;CoverWidth;IfcPositiveLengthMeasure -Pset_WasteTerminalTypeGullySump;NominalSumpLength;IfcPositiveLengthMeasure;NominalSumpWidth;IfcPositiveLengthMeasure;NominalSumpDepth;IfcPositiveLengthMeasure;OutletConnectionSize;IfcPositiveLengthMeasure;InletConnectionSize;IfcPositiveLengthMeasure;CoverLength;IfcPositiveLengthMeasure;CoverWidth;IfcPositiveLengthMeasure -Pset_WasteTerminalTypeGullyTrap;NominalBodyLength;IfcPositiveLengthMeasure;NominalBodyWidth;IfcPositiveLengthMeasure;NominalBodyDepth;IfcPositiveLengthMeasure;HasStrainer;IfcBoolean;OutletConnectionSize;IfcPositiveLengthMeasure;InletConnectionSize;IfcPositiveLengthMeasure;CoverLength;IfcPositiveLengthMeasure;CoverWidth;IfcPositiveLengthMeasure -Pset_WasteTerminalTypeRoofDrain;NominalBodyLength;IfcPositiveLengthMeasure;NominalBodyWidth;IfcPositiveLengthMeasure;NominalBodyDepth;IfcPositiveLengthMeasure;OutletConnectionSize;IfcPositiveLengthMeasure;CoverLength;IfcPositiveLengthMeasure;CoverWidth;IfcPositiveLengthMeasure -Pset_WasteTerminalTypeWasteDisposalUnit;DrainConnectionSize;IfcPositiveLengthMeasure;OutletConnectionSize;IfcPositiveLengthMeasure;NominalDepth;IfcPositiveLengthMeasure -Pset_WasteTerminalTypeWasteTrap;OutletConnectionSize;IfcPositiveLengthMeasure;InletConnectionSize;IfcPositiveLengthMeasure -Pset_WindowCommon;Reference;IfcIdentifier;AcousticRating;IfcLabel;FireRating;IfcLabel;SecurityRating;IfcLabel;IsExternal;IfcBoolean;Infiltration;IfcVolumetricFlowRateMeasure;ThermalTransmittance;IfcThermalTransmittanceMeasure;GlazingAreaFraction;IfcPositiveRatioMeasure;HasSillExternal;IfcBoolean;HasSillInternal;IfcBoolean;HasDrive;IfcBoolean;SmokeStop;IfcBoolean;FireExit;IfcBoolean;WaterTightnessRating;IfcLabel;MechanicalLoadRating;IfcLabel;WindLoadRating;IfcLabel -Pset_WorkControlCommon;WorkStartTime;IfcTime;WorkFinishTime;IfcTime;WorkDayDuration;IfcDuration;WorkWeekDuration;IfcDuration;WorkMonthDuration;IfcDuration -Pset_ZoneCommon;Reference;IfcIdentifier;IsExternal;IfcBoolean;GrossPlannedArea;IfcAreaMeasure;NetPlannedArea;IfcAreaMeasure;PubliclyAccessible;IfcBoolean;HandicapAccessible;IfcBoolean +Pset_ActionRequest;RequestSourceLabel;IfcLabel;RequestComments;IfcText +Pset_ActorCommon;NumberOfActors;IfcCountMeasure;Category;IfcLabel;SkillLevel;IfcLabel +Pset_ActuatorTypeCommon;Reference;IfcIdentifier;ManualOverride;IfcBoolean +Pset_ActuatorTypeElectricActuator;ActuatorInputPower;IfcPowerMeasure +Pset_ActuatorTypeHydraulicActuator;InputPressure;IfcPressureMeasure;InputFlowrate;IfcVolumetricFlowRateMeasure +Pset_ActuatorTypeLinearActuation;Force;IfcForceMeasure;Stroke;IfcLengthMeasure +Pset_ActuatorTypePneumaticActuator;InputPressure;IfcPressureMeasure;InputFlowrate;IfcVolumetricFlowRateMeasure +Pset_ActuatorTypeRotationalActuation;Torque;IfcTorqueMeasure;RangeAngle;IfcPlaneAngleMeasure +Pset_AirSideSystemInformation;Name;IfcLabel;Description;IfcLabel;TotalAirflow;IfcVolumetricFlowRateMeasure;EnergyGainTotal;IfcPowerMeasure;AirflowSensible;IfcVolumetricFlowRateMeasure;EnergyGainSensible;IfcPowerMeasure;EnergyLoss;IfcPowerMeasure;LightingDiversity;IfcPositiveRatioMeasure;InfiltrationDiversitySummer;IfcPositiveRatioMeasure;InfiltrationDiversityWinter;IfcPositiveRatioMeasure;ApplianceDiversity;IfcPositiveRatioMeasure;LoadSafetyFactor;IfcPositiveRatioMeasure;HeatingTemperatureDelta;IfcThermodynamicTemperatureMeasure;CoolingTemperatureDelta;IfcThermodynamicTemperatureMeasure;Ventilation;IfcVolumetricFlowRateMeasure;FanPower;IfcPowerMeasure +Pset_AirTerminalBoxTypeCommon;Reference;IfcIdentifier;AirflowRateRange;IfcVolumetricFlowRateMeasure;AirPressureRange;IfcPressureMeasure;NominalAirFlowRate;IfcVolumetricFlowRateMeasure;HasSoundAttenuator;IfcBoolean;HasReturnAir;IfcBoolean;HasFan;IfcBoolean;NominalInletAirPressure;IfcPressureMeasure;NominalDamperDiameter;IfcPositiveLengthMeasure;HousingThickness;IfcLengthMeasure;OperationTemperatureRange;IfcThermodynamicTemperatureMeasure;ReturnAirFractionRange;IfcPositiveRatioMeasure +Pset_AirTerminalOccurrence;AirFlowRate;IfcVolumetricFlowRateMeasure +Pset_AirTerminalPHistory;InductionRatio;IfcLengthMeasure;CenterlineAirVelocity;IfcLengthMeasure +Pset_AirTerminalTypeCommon;Reference;IfcIdentifier;SlotWidth;IfcPositiveLengthMeasure;SlotLength;IfcPositiveLengthMeasure;NumberOfSlots;IfcInteger;AirFlowrateRange;IfcVolumetricFlowRateMeasure;TemperatureRange;IfcThermodynamicTemperatureMeasure;ThrowLength;IfcLengthMeasure;AirDiffusionPerformanceIndex;IfcReal;FinishColor;IfcLabel;CoreSetHorizontal;IfcPlaneAngleMeasure;CoreSetVertical;IfcPlaneAngleMeasure;HasIntegralControl;IfcBoolean;HasSoundAttenuator;IfcBoolean;HasThermalInsulation;IfcBoolean;NeckArea;IfcAreaMeasure;EffectiveArea;IfcAreaMeasure;AirFlowrateVersusFlowControlElement;IfcPositiveRatioMeasure +Pset_AirToAirHeatRecoveryTypeCommon;Reference;IfcIdentifier;HasDefrost;IfcBoolean;OperationalTemperatureRange;IfcThermodynamicTemperatureMeasure;PrimaryAirflowRateRange;IfcVolumetricFlowRateMeasure;SecondaryAirflowRateRange;IfcPressureMeasure +Pset_AlarmTypeCommon;Reference;IfcIdentifier;Condition;IfcLabel +Pset_AnnotationContourLine;ContourValue;IfcLengthMeasure +Pset_AnnotationLineOfSight;SetbackDistance;IfcPositiveLengthMeasure;VisibleAngleLeft;IfcPositivePlaneAngleMeasure;VisibleAngleRight;IfcPositivePlaneAngleMeasure;RoadVisibleDistanceLeft;IfcPositiveLengthMeasure;RoadVisibleDistanceRight;IfcPositiveLengthMeasure +Pset_AnnotationSurveyArea;AccuracyQualityObtained;IfcRatioMeasure;AccuracyQualityExpected;IfcRatioMeasure +Pset_AudioVisualApplianceTypeAmplifier;AudioAmplification;IfcSoundPowerMeasure;AudioMode;IfcLabel +Pset_AudioVisualApplianceTypeCamera;IsOutdoors;IfcBoolean;VideoResolutionWidth;IfcInteger;VideoResolutionHeight;IfcInteger;VideoResolutionMode;IfcLabel;VideoCaptureInterval;IfcTimeMeasure;PanTiltZoomPreset;IfcLabel;PanHorizontal;IfcLengthMeasure;PanVertical;IfcLengthMeasure;TiltHorizontal;IfcPlaneAngleMeasure;TiltVertical;IfcPlaneAngleMeasure;Zoom;IfcPositiveLengthMeasure +Pset_AudioVisualApplianceTypeCommon;Reference;IfcIdentifier;MediaSource;IfcLabel;AudioVolume;IfcSoundPowerMeasure +Pset_AudioVisualApplianceTypeDisplay;NominalSize;IfcPositiveLengthMeasure;DisplayWidth;IfcPositiveLengthMeasure;DisplayHeight;IfcPositiveLengthMeasure;Brightness;IfcIlluminanceMeasure;ContrastRatio;IfcPositiveRatioMeasure;RefreshRate;IfcFrequencyMeasure;VideoResolutionWidth;IfcInteger;VideoResolutionHeight;IfcInteger;VideoResolutionMode;IfcLabel;VideoScaleMode;IfcLabel;VideoCaptionMode;IfcLabel;AudioMode;IfcLabel +Pset_AudioVisualApplianceTypePlayer;PlayerMediaEject;IfcBoolean;PlayerMediaFormat;IfcLabel +Pset_AudioVisualApplianceTypeProjector;VideoResolutionWidth;IfcInteger;VideoResolutionHeight;IfcInteger;VideoResolutionMode;IfcLabel;VideoScaleMode;IfcLabel;VideoCaptionMode;IfcLabel +Pset_AudioVisualApplianceTypeReceiver;AudioAmplification;IfcRatioMeasure;AudioMode;IfcLabel +Pset_AudioVisualApplianceTypeSpeaker;SpeakerDriverSize;IfcPositiveLengthMeasure;FrequencyResponse;IfcSoundPowerMeasure;Impedence;IfcFrequencyMeasure +Pset_AudioVisualApplianceTypeTuner;TunerMode;IfcLabel;TunerChannel;IfcLabel;TunerFrequency;IfcFrequencyMeasure +Pset_BeamCommon;Reference;IfcIdentifier;Span;IfcPositiveLengthMeasure;Slope;IfcPlaneAngleMeasure;Roll;IfcPlaneAngleMeasure;IsExternal;IfcBoolean;ThermalTransmittance;IfcThermalTransmittanceMeasure;LoadBearing;IfcBoolean;FireRating;IfcLabel +Pset_BoilerTypeCommon;Reference;IfcIdentifier;PressureRating;IfcPressureMeasure;HeatTransferSurfaceArea;IfcAreaMeasure;NominalPartLoadRatio;IfcReal;WaterInletTemperatureRange;IfcThermodynamicTemperatureMeasure;WaterStorageCapacity;IfcVolumeMeasure;IsWaterStorageHeater;IfcBoolean;PartialLoadEfficiencyCurves;IfcNormalisedRatioMeasure;OutletTemperatureRange;IfcThermodynamicTemperatureMeasure;NominalEnergyConsumption;IfcPowerMeasure +Pset_BoilerTypeSteam;MaximumOutletPressure;IfcLabel;NominalEfficiency;IfcNormalisedRatioMeasure;HeatOutput;IfcEnergyMeasure +Pset_BoilerTypeWater;NominalEfficiency;IfcNormalisedRatioMeasure;HeatOutput;IfcEnergyMeasure +Pset_BuildingCommon;Reference;IfcIdentifier;BuildingID;IfcIdentifier;IsPermanentID;IfcBoolean;ConstructionMethod;IfcLabel;FireProtectionClass;IfcLabel;SprinklerProtection;IfcBoolean;SprinklerProtectionAutomatic;IfcBoolean;OccupancyType;IfcLabel;GrossPlannedArea;IfcAreaMeasure;NetPlannedArea;IfcAreaMeasure;NumberOfStoreys;IfcInteger;YearOfConstruction;IfcLabel;YearOfLastRefurbishment;IfcLabel;IsLandmarked;IfcLogical +Pset_BuildingElementProxyCommon;Reference;IfcIdentifier;IsExternal;IfcBoolean;ThermalTransmittance;IfcThermalTransmittanceMeasure;LoadBearing;IfcBoolean;FireRating;IfcLabel +Pset_BuildingElementProxyProvisionForVoid;Shape;IfcLabel;Width;IfcPositiveLengthMeasure;Height;IfcPositiveLengthMeasure;Diameter;IfcPositiveLengthMeasure;Depth;IfcPositiveLengthMeasure;System;IfcLabel +Pset_BuildingStoreyCommon;Reference;IfcIdentifier;EntranceLevel;IfcBoolean;AboveGround;IfcLogical;SprinklerProtection;IfcBoolean;SprinklerProtectionAutomatic;IfcBoolean;LoadBearingCapacity;IfcPlanarForceMeasure;GrossPlannedArea;IfcAreaMeasure;NetPlannedArea;IfcAreaMeasure +Pset_BuildingSystemCommon;Reference;IfcIdentifier +Pset_BuildingUse;MarketCategory;IfcLabel;MarketSubCategory;IfcLabel;PlanningControlStatus;IfcLabel;NarrativeText;IfcText;VacancyRateInCategoryNow;IfcPositiveRatioMeasure;TenureModesAvailableNow;IfcLabel;MarketSubCategoriesAvailableNow;IfcLabel;RentalRatesInCategoryNow;IfcMonetaryMeasure;VacancyRateInCategoryFuture;IfcPositiveRatioMeasure;TenureModesAvailableFuture;IfcLabel;MarketSubCategoriesAvailableFuture;IfcLabel;RentalRatesInCategoryFuture;IfcMonetaryMeasure +Pset_BuildingUseAdjacent;MarketCategory;IfcLabel;MarketSubCategory;IfcLabel;PlanningControlStatus;IfcLabel;NarrativeText;IfcText +Pset_BurnerTypeCommon;Reference;IfcIdentifier +Pset_CableCarrierFittingTypeCommon;Reference;IfcIdentifier +Pset_CableCarrierSegmentTypeCableLadderSegment;NominalWidth;IfcPositiveLengthMeasure;NominalHeight;IfcPositiveLengthMeasure;LadderConfiguration;IfcText +Pset_CableCarrierSegmentTypeCableTraySegment;NominalWidth;IfcPositiveLengthMeasure;NominalHeight;IfcPositiveLengthMeasure;HasCover;IfcBoolean +Pset_CableCarrierSegmentTypeCableTrunkingSegment;NominalWidth;IfcPositiveLengthMeasure;NominalHeight;IfcPositiveLengthMeasure;NumberOfCompartments;IfcInteger +Pset_CableCarrierSegmentTypeCommon;Reference;IfcIdentifier +Pset_CableCarrierSegmentTypeConduitSegment;NominalWidth;IfcPositiveLengthMeasure;NominalHeight;IfcPositiveLengthMeasure;IsRigid;IfcBoolean +Pset_CableFittingTypeCommon;Reference;IfcIdentifier +Pset_CableSegmentOccurrence;DesignAmbientTemperature;IfcThermodynamicTemperatureMeasure;UserCorrectionFactor;IfcReal;NumberOfParallelCircuits;IfcInteger;InstallationMethod;IfcLabel;DistanceBetweenParallelCircuits;IfcLengthMeasure;SoilConductivity;IfcThermalConductivityMeasure;CarrierStackNumber;IfcInteger;IsHorizontalCable;IfcBoolean;IsMountedFlatCable;IfcBoolean;CurrentCarryingCapasity;IfcElectricCurrentMeasure;MaximumCableLength;IfcLengthMeasure;PowerLoss;IfcElectricCurrentMeasure +Pset_CableSegmentTypeBusBarSegment;IsHorizontalBusbar;IfcBoolean +Pset_CableSegmentTypeCableSegment;Standard;IfcLabel;NumberOfCores;IfcInteger;OverallDiameter;IfcPositiveLengthMeasure;RatedVoltage;IfcElectricVoltageMeasure;RatedTemperature;IfcThermodynamicTemperatureMeasure;ScreenDiameter;IfcPositiveLengthMeasure;HasProtectiveEarth;IfcBoolean;MaximumOperatingTemperature;IfcThermodynamicTemperatureMeasure;MaximumShortCircuitTemperature;IfcThermodynamicTemperatureMeasure;SpecialConstruction;IfcLabel;Weight;IfcMassMeasure;SelfExtinguishing60332_1;IfcBoolean;SelfExtinguishing60332_3;IfcBoolean;HalogenProof;IfcBoolean;FunctionReliable;IfcBoolean +Pset_CableSegmentTypeCommon;Reference;IfcIdentifier +Pset_CableSegmentTypeConductorSegment;CrossSectionalArea;IfcAreaMeasure +Pset_CableSegmentTypeCoreSegment;OverallDiameter;IfcPositiveLengthMeasure;RatedVoltage;IfcElectricVoltageMeasure;RatedTemperature;IfcThermodynamicTemperatureMeasure;ScreenDiameter;IfcPositiveLengthMeasure;CoreIdentifier;IfcIdentifier;Weight;IfcMassMeasure;SelfExtinguishing60332_1;IfcBoolean;SelfExtinguishing60332_3;IfcBoolean;HalogenProof;IfcBoolean;FunctionReliable;IfcBoolean;Standard;IfcLabel +Pset_ChillerTypeCommon;Reference;IfcIdentifier;NominalCapacity;IfcPowerMeasure;NominalEfficiency;IfcPositiveRatioMeasure;NominalCondensingTemperature;IfcThermodynamicTemperatureMeasure;NominalEvaporatingTemperature;IfcThermodynamicTemperatureMeasure;NominalHeatRejectionRate;IfcPowerMeasure;NominalPowerConsumption;IfcPowerMeasure;CapacityCurve;IfcPowerMeasure;CoefficientOfPerformanceCurve;IfcReal;FullLoadRatioCurve;IfcNormalisedRatioMeasure +Pset_ChimneyCommon;Reference;IfcIdentifier;NumberOfDrafts;IfcCountMeasure;IsExternal;IfcBoolean;ThermalTransmittance;IfcThermalTransmittanceMeasure;LoadBearing;IfcBoolean;FireRating;IfcLabel +Pset_CivilElementCommon;Reference;IfcIdentifier +Pset_CoilOccurrence;HasSoundAttenuation;IfcBoolean +Pset_CoilTypeCommon;Reference;IfcIdentifier;OperationalTemperatureRange;IfcThermodynamicTemperatureMeasure;AirflowRateRange;IfcVolumetricFlowRateMeasure;NominalSensibleCapacity;IfcPowerMeasure;NominalLatentCapacity;IfcPowerMeasure;NominalUA;IfcReal +Pset_CoilTypeHydronic;FluidPressureRange;IfcPressureMeasure;CoilFaceArea;IfcAreaMeasure;HeatExchangeSurfaceArea;IfcAreaMeasure;PrimarySurfaceArea;IfcAreaMeasure;SecondarySurfaceArea;IfcAreaMeasure;TotalUACurves;IfcVolumetricFlowRateMeasure;WaterPressureDropCurve;IfcPressureMeasure;BypassFactor;IfcNormalisedRatioMeasure;SensibleHeatRatio;IfcNormalisedRatioMeasure;WetCoilFraction;IfcNormalisedRatioMeasure +Pset_ColumnCommon;Reference;IfcIdentifier;Slope;IfcPlaneAngleMeasure;Roll;IfcPlaneAngleMeasure;IsExternal;IfcBoolean;ThermalTransmittance;IfcThermalTransmittanceMeasure;LoadBearing;IfcBoolean;FireRating;IfcLabel +Pset_CommunicationsApplianceTypeCommon;Reference;IfcIdentifier +Pset_CompressorTypeCommon;Reference;IfcIdentifier;MinimumPartLoadRatio;IfcPositiveRatioMeasure;MaximumPartLoadRatio;IfcPositiveRatioMeasure;CompressorSpeed;IfcRotationalFrequencyMeasure;NominalCapacity;IfcPowerMeasure;IdealCapacity;IfcPowerMeasure;IdealShaftPower;IfcPowerMeasure;HasHotGasBypass;IfcBoolean;ImpellerDiameter;IfcPositiveLengthMeasure +Pset_ConcreteElementGeneral;ConstructionMethod;IfcLabel;StructuralClass;IfcLabel;StrengthClass;IfcLabel;ExposureClass;IfcLabel;ReinforcementVolumeRatio;IfcMassDensityMeasure;ReinforcementAreaRatio;IfcAreaDensityMeasure;DimensionalAccuracyClass;IfcLabel;ConstructionToleranceClass;IfcLabel;ConcreteCover;IfcPositiveLengthMeasure;ConcreteCoverAtMainBars;IfcPositiveLengthMeasure;ConcreteCoverAtLinks;IfcPositiveLengthMeasure;ReinforcementStrengthClass;IfcLabel +Pset_CondenserTypeCommon;Reference;IfcIdentifier;ExternalSurfaceArea;IfcAreaMeasure;InternalSurfaceArea;IfcAreaMeasure;InternalRefrigerantVolume;IfcVolumeMeasure;InternalWaterVolume;IfcVolumeMeasure;NominalHeatTransferArea;IfcAreaMeasure;NominalHeatTransferCoefficient;IfcThermalTransmittanceMeasure +Pset_Condition;AssessmentDate;IfcDate;AssessmentCondition;IfcLabel;AssessmentDescription;IfcText +Pset_ControllerTypeCommon;Reference;IfcIdentifier +Pset_ControllerTypeFloating;Labels;IfcLabel;Range;IfcReal;Value;IfcReal;SignalOffset;IfcReal;SignalFactor;IfcReal;SignalTime;IfcTimeMeasure +Pset_ControllerTypeMultiPosition;Labels;IfcLabel;Range;IfcInteger;Value;IfcInteger +Pset_ControllerTypeProgrammable;FirmwareVersion;IfcLabel;SoftwareVersion;IfcLabel +Pset_ControllerTypeProportional;Labels;IfcLabel;Range;IfcReal;Value;IfcReal;ProportionalConstant;IfcReal;IntegralConstant;IfcReal;DerivativeConstant;IfcReal;SignalTimeIncrease;IfcTimeMeasure;SignalTimeDecrease;IfcTimeMeasure +Pset_ControllerTypeTwoPosition;Labels;IfcLabel;Polarity;IfcBoolean;Value;IfcBoolean +Pset_CooledBeamTypeActive;AirflowRateRange;IfcVolumetricFlowRateMeasure;ConnectionSize;IfcLengthMeasure +Pset_CooledBeamTypeCommon;Reference;IfcIdentifier;IsFreeHanging;IfcBoolean;WaterPressureRange;IfcPressureMeasure;NominalCoolingCapacity;IfcPowerMeasure;NominalSurroundingTemperatureCooling;IfcThermodynamicTemperatureMeasure;NominalSurroundingHumidityCooling;IfcNormalisedRatioMeasure;NominalSupplyWaterTemperatureCooling;IfcThermodynamicTemperatureMeasure;NominalReturnWaterTemperatureCooling;IfcThermodynamicTemperatureMeasure;NominalWaterFlowCooling;IfcVolumetricFlowRateMeasure;NominalHeatingCapacity;IfcPowerMeasure;NominalSurroundingTemperatureHeating;IfcThermodynamicTemperatureMeasure;NominalSupplyWaterTemperatureHeating;IfcThermodynamicTemperatureMeasure;NominalReturnWaterTemperatureHeating;IfcThermodynamicTemperatureMeasure;NominalWaterFlowHeating;IfcVolumetricFlowRateMeasure;FinishColor;IfcLabel;CoilLength;IfcPositiveLengthMeasure;CoilWidth;IfcPositiveLengthMeasure +Pset_CoolingTowerTypeCommon;Reference;IfcIdentifier;NominalCapacity;IfcPowerMeasure;NumberOfCells;IfcInteger;BasinReserveVolume;IfcVolumeMeasure;LiftElevationDifference;IfcPositiveLengthMeasure;WaterRequirement;IfcVolumetricFlowRateMeasure;OperationTemperatureRange;IfcThermodynamicTemperatureMeasure;AmbientDesignDryBulbTemperature;IfcThermodynamicTemperatureMeasure;AmbientDesignWetBulbTemperature;IfcThermodynamicTemperatureMeasure +Pset_CoveringCeiling;Permeability;IfcNormalisedRatioMeasure;TileLength;IfcPositiveLengthMeasure;TileWidth;IfcPositiveLengthMeasure +Pset_CoveringCommon;Reference;IfcIdentifier;AcousticRating;IfcLabel;FlammabilityRating;IfcLabel;FragilityRating;IfcLabel;Combustible;IfcBoolean;SurfaceSpreadOfFlame;IfcLabel;Finish;IfcText;IsExternal;IfcBoolean;ThermalTransmittance;IfcThermalTransmittanceMeasure;FireRating;IfcLabel +Pset_CoveringFlooring;HasNonSkidSurface;IfcBoolean;HasAntiStaticSurface;IfcBoolean +Pset_CurtainWallCommon;Reference;IfcIdentifier;AcousticRating;IfcLabel;FireRating;IfcLabel;Combustible;IfcBoolean;SurfaceSpreadOfFlame;IfcLabel;ThermalTransmittance;IfcThermalTransmittanceMeasure;IsExternal;IfcBoolean +Pset_DamperTypeCommon;Reference;IfcIdentifier;BladeThickness;IfcPositiveLengthMeasure;NumberofBlades;IfcInteger;FaceArea;IfcAreaMeasure;MaximumAirFlowRate;IfcVolumetricFlowRateMeasure;TemperatureRange;IfcThermodynamicTemperatureMeasure;MaximumWorkingPressure;IfcPressureMeasure;TemperatureRating;IfcThermodynamicTemperatureMeasure;NominalAirFlowRate;IfcVolumetricFlowRateMeasure;OpenPressureDrop;IfcPressureMeasure;LeakageFullyClosed;IfcVolumetricFlowRateMeasure;LossCoefficentCurve;IfcReal;LeakageCurve;IfcPressureMeasure;RegeneratedSoundCurve;IfcSoundPressureMeasure;FrameType;IfcLabel;FrameDepth;IfcPositiveLengthMeasure;FrameThickness;IfcPositiveLengthMeasure;CloseOffRating;IfcPressureMeasure +Pset_DamperTypeControlDamper;TorqueRange;IfcTorqueMeasure +Pset_DamperTypeFireDamper;FireResistanceRating;IfcLabel;FusibleLinkTemperature;IfcThermodynamicTemperatureMeasure +Pset_DamperTypeFireSmokeDamper;ControlType;IfcLabel;FireResistanceRating;IfcLabel;FusibleLinkTemperature;IfcThermodynamicTemperatureMeasure +Pset_DamperTypeSmokeDamper;ControlType;IfcLabel +Pset_DiscreteAccessoryColumnShoe;ColumnShoeBasePlateThickness;IfcPositiveLengthMeasure;ColumnShoeBasePlateWidth;IfcPositiveLengthMeasure;ColumnShoeBasePlateDepth;IfcPositiveLengthMeasure;ColumnShoeCasingHeight;IfcPositiveLengthMeasure;ColumnShoeCasingWidth;IfcPositiveLengthMeasure;ColumnShoeCasingDepth;IfcPositiveLengthMeasure +Pset_DiscreteAccessoryCornerFixingPlate;CornerFixingPlateLength;IfcPositiveLengthMeasure;CornerFixingPlateThickness;IfcPositiveLengthMeasure;CornerFixingPlateFlangeWidthInPlaneZ;IfcPositiveLengthMeasure;CornerFixingPlateFlangeWidthInPlaneX;IfcPositiveLengthMeasure +Pset_DiscreteAccessoryDiagonalTrussConnector;DiagonalTrussHeight;IfcPositiveLengthMeasure;DiagonalTrussLength;IfcPositiveLengthMeasure;DiagonalTrussCrossBarSpacing;IfcPositiveLengthMeasure;DiagonalTrussBaseBarDiameter;IfcPositiveLengthMeasure;DiagonalTrussSecondaryBarDiameter;IfcPositiveLengthMeasure;DiagonalTrussCrossBarDiameter;IfcPositiveLengthMeasure +Pset_DiscreteAccessoryEdgeFixingPlate;EdgeFixingPlateLength;IfcPositiveLengthMeasure;EdgeFixingPlateThickness;IfcPositiveLengthMeasure;EdgeFixingPlateFlangeWidthInPlaneZ;IfcPositiveLengthMeasure;EdgeFixingPlateFlangeWidthInPlaneX;IfcPositiveLengthMeasure +Pset_DiscreteAccessoryFixingSocket;FixingSocketHeight;IfcPositiveLengthMeasure;FixingSocketThreadDiameter;IfcPositiveLengthMeasure;FixingSocketThreadLength;IfcPositiveLengthMeasure +Pset_DiscreteAccessoryLadderTrussConnector;LadderTrussHeight;IfcPositiveLengthMeasure;LadderTrussLength;IfcPositiveLengthMeasure;LadderTrussCrossBarSpacing;IfcPositiveLengthMeasure;LadderTrussBaseBarDiameter;IfcPositiveLengthMeasure;LadderTrussSecondaryBarDiameter;IfcPositiveLengthMeasure;LadderTrussCrossBarDiameter;IfcPositiveLengthMeasure +Pset_DiscreteAccessoryStandardFixingPlate;StandardFixingPlateWidth;IfcPositiveLengthMeasure;StandardFixingPlateDepth;IfcPositiveLengthMeasure;StandardFixingPlateThickness;IfcPositiveLengthMeasure +Pset_DiscreteAccessoryWireLoop;WireLoopBasePlateThickness;IfcPositiveLengthMeasure;WireLoopBasePlateWidth;IfcPositiveLengthMeasure;WireLoopBasePlateLength;IfcPositiveLengthMeasure;WireDiameter;IfcPositiveLengthMeasure;WireEmbeddingLength;IfcPositiveLengthMeasure;WireLoopLength;IfcPositiveLengthMeasure +Pset_DistributionChamberElementCommon;Reference;IfcIdentifier +Pset_DistributionChamberElementTypeFormedDuct;ClearWidth;IfcPositiveLengthMeasure;ClearDepth;IfcPositiveLengthMeasure;WallThickness;IfcPositiveLengthMeasure;BaseThickness;IfcPositiveLengthMeasure;AccessCoverLoadRating;IfcText +Pset_DistributionChamberElementTypeInspectionChamber;ChamberLengthOrRadius;IfcPositiveLengthMeasure;ChamberWidth;IfcPositiveLengthMeasure;InvertLevel;IfcLengthMeasure;SoffitLevel;IfcLengthMeasure;WallThickness;IfcPositiveLengthMeasure;BaseThickness;IfcPositiveLengthMeasure;WithBackdrop;IfcBoolean;AccessLengthOrRadius;IfcPositiveLengthMeasure;AccessWidth;IfcPositiveLengthMeasure;AccessCoverLoadRating;IfcText +Pset_DistributionChamberElementTypeInspectionPit;Length;IfcPositiveLengthMeasure;Width;IfcPositiveLengthMeasure;Depth;IfcPositiveLengthMeasure +Pset_DistributionChamberElementTypeManhole;InvertLevel;IfcLengthMeasure;SoffitLevel;IfcLengthMeasure;WallThickness;IfcPositiveLengthMeasure;BaseThickness;IfcPositiveLengthMeasure;IsShallow;IfcBoolean;HasSteps;IfcBoolean;WithBackdrop;IfcBoolean;AccessLengthOrRadius;IfcPositiveLengthMeasure;AccessWidth;IfcPositiveLengthMeasure;AccessCoverLoadRating;IfcText +Pset_DistributionChamberElementTypeMeterChamber;ChamberLengthOrRadius;IfcPositiveLengthMeasure;ChamberWidth;IfcPositiveLengthMeasure;WallThickness;IfcPositiveLengthMeasure;BaseThickness;IfcPositiveLengthMeasure +Pset_DistributionChamberElementTypeSump;Length;IfcPositiveLengthMeasure;Width;IfcPositiveLengthMeasure;InvertLevel;IfcPositiveLengthMeasure +Pset_DistributionChamberElementTypeTrench;Width;IfcPositiveLengthMeasure;Depth;IfcPositiveLengthMeasure;InvertLevel;IfcLengthMeasure +Pset_DistributionChamberElementTypeValveChamber;ChamberLengthOrRadius;IfcPositiveLengthMeasure;ChamberWidth;IfcPositiveLengthMeasure;WallThickness;IfcPositiveLengthMeasure;BaseThickness;IfcPositiveLengthMeasure +Pset_DistributionPortCommon;PortNumber;IfcInteger;ColorCode;IfcLabel +Pset_DistributionPortTypeCable;ConnectionSubtype;IfcLabel;CurrentContent3rdHarmonic;IfcPositiveRatioMeasure;Current;IfcElectricCurrentMeasure;Voltage;IfcElectricVoltageMeasure;Power;IfcPowerMeasure;Protocols;IfcIdentifier +Pset_DistributionPortTypeDuct;ConnectionSubType;IfcLabel;NominalWidth;IfcPositiveLengthMeasure;NominalHeight;IfcPositiveLengthMeasure;NominalThickness;IfcPositiveLengthMeasure;DryBulbTemperature;IfcThermodynamicTemperatureMeasure;WetBulbTemperature;IfcThermodynamicTemperatureMeasure;VolumetricFlowRate;IfcVolumetricFlowRateMeasure;Velocity;IfcLinearVelocityMeasure;Pressure;IfcPressureMeasure +Pset_DistributionPortTypePipe;ConnectionSubType;IfcLabel;NominalDiameter;IfcPositiveLengthMeasure;InnerDiameter;IfcPositiveLengthMeasure;OuterDiameter;IfcPositiveLengthMeasure;Temperature;IfcThermodynamicTemperatureMeasure;VolumetricFlowRate;IfcVolumetricFlowRateMeasure;MassFlowRate;IfcMassFlowRateMeasure;FlowCondition;IfcPositiveRatioMeasure;Velocity;IfcLinearVelocityMeasure;Pressure;IfcPressureMeasure +Pset_DistributionSystemCommon;Reference;IfcIdentifier +Pset_DistributionSystemTypeElectrical;Diversity;IfcPositiveRatioMeasure;NumberOfLiveConductors;IfcInteger;MaximumAllowedVoltageDrop;IfcElectricVoltageMeasure;NetImpedance;IfcElectricResistanceMeasure +Pset_DistributionSystemTypeVentilation;DesignName;IfcLabel;PressureClass;IfcPressureMeasure;LeakageClass;IfcPressureMeasure;FrictionLoss;IfcReal;ScrapFactor;IfcReal;MaximumVelocity;IfcLinearVelocityMeasure;AspectRatio;IfcReal;MinimumHeight;IfcPositiveLengthMeasure;MinimumWidth;IfcPositiveLengthMeasure +Pset_DoorCommon;Reference;IfcIdentifier;FireRating;IfcLabel;AcousticRating;IfcLabel;SecurityRating;IfcLabel;DurabilityRating;IfcLabel;HygrothermalRating;IfcLabel;WaterTightnessRating;IfcLabel;MechanicalLoadRating;IfcLabel;WindLoadRating;IfcLabel;Infiltration;IfcVolumetricFlowRateMeasure;IsExternal;IfcBoolean;ThermalTransmittance;IfcThermalTransmittanceMeasure;GlazingAreaFraction;IfcPositiveRatioMeasure;HandicapAccessible;IfcBoolean;FireExit;IfcBoolean;HasDrive;IfcBoolean;SelfClosing;IfcBoolean;SmokeStop;IfcBoolean +Pset_DoorWindowGlazingType;GlassLayers;IfcCountMeasure;GlassThickness1;IfcPositiveLengthMeasure;GlassThickness2;IfcPositiveLengthMeasure;GlassThickness3;IfcPositiveLengthMeasure;FillGas;IfcLabel;GlassColor;IfcLabel;IsTempered;IfcBoolean;IsLaminated;IfcBoolean;IsCoated;IfcBoolean;IsWired;IfcBoolean;VisibleLightReflectance;IfcNormalisedRatioMeasure;VisibleLightTransmittance;IfcNormalisedRatioMeasure;SolarAbsorption;IfcNormalisedRatioMeasure;SolarReflectance;IfcNormalisedRatioMeasure;SolarTransmittance;IfcNormalisedRatioMeasure;SolarHeatGainTransmittance;IfcNormalisedRatioMeasure;ShadingCoefficient;IfcNormalisedRatioMeasure;ThermalTransmittanceSummer;IfcThermalTransmittanceMeasure;ThermalTransmittanceWinter;IfcThermalTransmittanceMeasure +Pset_DuctFittingOccurrence;InteriorRoughnessCoefficient;IfcPositiveLengthMeasure;HasLiner;IfcBoolean;Color;IfcLabel +Pset_DuctFittingTypeCommon;Reference;IfcIdentifier;PressureClass;IfcPressureMeasure;PressureRange;IfcPressureMeasure;TemperatureRange;IfcThermodynamicTemperatureMeasure +Pset_DuctSegmentOccurrence;InteriorRoughnessCoefficient;IfcPositiveLengthMeasure;HasLiner;IfcBoolean;Color;IfcLabel +Pset_DuctSegmentTypeCommon;Reference;IfcIdentifier;WorkingPressure;IfcPressureMeasure;PressureRange;IfcPressureMeasure;TemperatureRange;IfcThermodynamicTemperatureMeasure;LongitudinalSeam;IfcText;NominalDiameterOrWidth;IfcPositiveLengthMeasure;NominalHeight;IfcPositiveLengthMeasure;Reinforcement;IfcLabel;ReinforcementSpacing;IfcPositiveLengthMeasure +Pset_DuctSilencerTypeCommon;Reference;IfcIdentifier;HydraulicDiameter;IfcLengthMeasure;Length;IfcLengthMeasure;Weight;IfcMassMeasure;AirFlowrateRange;IfcVolumetricFlowRateMeasure;WorkingPressureRange;IfcPressureMeasure;TemperatureRange;IfcThermodynamicTemperatureMeasure;HasExteriorInsulation;IfcBoolean +Pset_ElectricalDeviceCommon;RatedCurrent;IfcElectricCurrentMeasure;RatedVoltage;IfcElectricVoltageMeasure;NominalFrequencyRange;IfcFrequencyMeasure;PowerFactor;IfcNormalisedRatioMeasure;NumberOfPoles;IfcInteger;HasProtectiveEarth;IfcBoolean;IP_Code;IfcLabel;IK_Code;IfcLabel +Pset_ElectricApplianceTypeCommon;Reference;IfcIdentifier +Pset_ElectricDistributionBoardOccurrence;IsMain;IfcBoolean;IsSkilledOperator;IfcBoolean +Pset_ElectricDistributionBoardTypeCommon;Reference;IfcIdentifier +Pset_ElectricFlowStorageDeviceTypeCommon;Reference;IfcIdentifier;NominalSupplyVoltage;IfcElectricVoltageMeasure;NominalSupplyVoltageOffset;IfcElectricVoltageMeasure;NominalFrequency;IfcFrequencyMeasure;ShortCircuit3PoleMaximumState;IfcElectricCurrentMeasure;ShortCircuit3PolePowerFactorMaximumState;IfcReal;ShortCircuit2PoleMinimumState;IfcElectricCurrentMeasure;ShortCircuit2PolePowerFactorMinimumState;IfcReal;ShortCircuit1PoleMaximumState;IfcElectricCurrentMeasure;ShortCircuit1PolePowerFactorMaximumState;IfcReal;ShortCircuit1PoleMinimumState;IfcElectricCurrentMeasure;ShortCircuit1PolePowerFactorMinimumState;IfcReal;EarthFault1PoleMaximumState;IfcElectricCurrentMeasure;EarthFault1PolePowerFactorMaximumState;IfcReal;EarthFault1PoleMinimumState;IfcElectricCurrentMeasure;EarthFault1PolePowerFactorMinimumState;IfcReal +Pset_ElectricGeneratorTypeCommon;Reference;IfcIdentifier;ElectricGeneratorEfficiency;IfcPositiveRatioMeasure;StartCurrentFactor;IfcReal;MaximumPowerOutput;IfcPowerMeasure +Pset_ElectricMotorTypeCommon;Reference;IfcIdentifier;MaximumPowerOutput;IfcPowerMeasure;ElectricMotorEfficiency;IfcPositiveRatioMeasure;StartCurrentFactor;IfcReal;StartingTime;IfcTimeMeasure;TeTime;IfcTimeMeasure;LockedRotorCurrent;IfcElectricCurrentMeasure;FrameSize;IfcLabel;IsGuarded;IfcBoolean;HasPartWinding;IfcBoolean +Pset_ElectricTimeControlTypeCommon;Reference;IfcIdentifier +Pset_ElementAssemblyCommon;Reference;IfcLabel +Pset_ElementComponentCommon;Reference;IfcIdentifier +Pset_EngineTypeCommon;Reference;IfcIdentifier +Pset_EnvironmentalImpactIndicators;Reference;IfcIdentifier;FunctionalUnitReference;IfcLabel;Unit;IfcText;ExpectedServiceLife;IfcTimeMeasure;TotalPrimaryEnergyConsumptionPerUnit;IfcEnergyMeasure;WaterConsumptionPerUnit;IfcVolumeMeasure;HazardousWastePerUnit;IfcMassMeasure;NonHazardousWastePerUnit;IfcMassMeasure;ClimateChangePerUnit;IfcMassMeasure;AtmosphericAcidificationPerUnit;IfcMassMeasure;RenewableEnergyConsumptionPerUnit;IfcEnergyMeasure;NonRenewableEnergyConsumptionPerUnit;IfcEnergyMeasure;ResourceDepletionPerUnit;IfcMassMeasure;InertWastePerUnit;IfcMassMeasure;RadioactiveWastePerUnit;IfcMassMeasure;StratosphericOzoneLayerDestructionPerUnit;IfcMassMeasure;PhotochemicalOzoneFormationPerUnit;IfcMassMeasure;EutrophicationPerUnit;IfcMassMeasure +Pset_EnvironmentalImpactValues;TotalPrimaryEnergyConsumption;IfcEnergyMeasure;WaterConsumption;IfcVolumeMeasure;HazardousWaste;IfcMassMeasure;NonHazardousWaste;IfcMassMeasure;ClimateChange;IfcMassMeasure;AtmosphericAcidification;IfcMassMeasure;RenewableEnergyConsumption;IfcEnergyMeasure;NonRenewableEnergyConsumption;IfcEnergyMeasure;ResourceDepletion;IfcMassMeasure;InertWaste;IfcMassMeasure;RadioactiveWaste;IfcMassMeasure;StratosphericOzoneLayerDestruction;IfcMassMeasure;PhotochemicalOzoneFormation;IfcMassMeasure;Eutrophication;IfcMassMeasure;LeadInTime;IfcDuration;Duration;IfcDuration;LeadOutTime;IfcDuration +Pset_EvaporativeCoolerTypeCommon;Reference;IfcIdentifier;HeatExchangeArea;IfcAreaMeasure;OperationTemperatureRange;IfcThermodynamicTemperatureMeasure;WaterRequirement;IfcVolumetricFlowRateMeasure;EffectivenessTable;IfcReal;AirPressureDropCurve;IfcPressureMeasure;WaterPressDropCurve;IfcPressureMeasure +Pset_EvaporatorTypeCommon;Reference;IfcIdentifier;ExternalSurfaceArea;IfcAreaMeasure;InternalSurfaceArea;IfcAreaMeasure;InternalRefrigerantVolume;IfcVolumeMeasure;InternalWaterVolume;IfcVolumeMeasure;NominalHeatTransferArea;IfcAreaMeasure;NominalHeatTransferCoefficient;IfcThermalTransmittanceMeasure +Pset_FanOccurrence;FractionOfMotorHeatToAirStream;IfcNormalisedRatioMeasure;ImpellerDiameter;IfcPositiveLengthMeasure +Pset_FanTypeCommon;Reference;IfcIdentifier;OperationTemperatureRange;IfcThermodynamicTemperatureMeasure;NominalAirFlowRate;IfcVolumetricFlowRateMeasure;NominalTotalPressure;IfcPressureMeasure;NominalStaticPressure;IfcPressureMeasure;NominalRotationSpeed;IfcRotationalFrequencyMeasure;NominalPowerRate;IfcPowerMeasure;OperationalCriteria;IfcTimeMeasure;PressureCurve;IfcPressureMeasure;EfficiencyCurve;IfcNormalisedRatioMeasure +Pset_FastenerWeld;Type1;IfcLabel;Type2;IfcLabel;Surface1;IfcLabel;Surface2;IfcLabel;Process;IfcInteger;ProcessName;IfcLabel;a;IfcPositiveLengthMeasure;c;IfcPositiveLengthMeasure;d;IfcPositiveLengthMeasure;e;IfcPositiveLengthMeasure;l;IfcPositiveLengthMeasure;n;IfcCountMeasure;s;IfcPositiveLengthMeasure;z;IfcPositiveLengthMeasure;Intermittent;IfcBoolean;Staggered;IfcBoolean +Pset_FilterTypeAirParticleFilter;DustHoldingCapacity;IfcMassMeasure;FaceSurfaceArea;IfcAreaMeasure;MediaExtendedArea;IfcAreaMeasure;NominalCountedEfficiency;IfcReal;NominalWeightedEfficiency;IfcReal;PressureDropCurve;IfcPressureMeasure;CountedEfficiencyCurve;IfcReal;WeightedEfficiencyCurve;IfcReal +Pset_FilterTypeCommon;Reference;IfcIdentifier;Weight;IfcMassMeasure;InitialResistance;IfcPressureMeasure;FinalResistance;IfcPressureMeasure;OperationTemperatureRange;IfcThermodynamicTemperatureMeasure;FlowRateRange;IfcVolumetricFlowRateMeasure;NominalFilterFaceVelocity;IfcLinearVelocityMeasure;NominalMediaSurfaceVelocity;IfcLinearVelocityMeasure;NominalPressureDrop;IfcPressureMeasure;NominalFlowrate;IfcVolumetricFlowRateMeasure;NominalParticleGeometricMeanDiameter;IfcPositiveLengthMeasure;NominalParticleGeometricStandardDeviation;IfcReal +Pset_FilterTypeCompressedAirFilter;OperationPressureMax;IfcPressureMeasure;ParticleAbsorptionCurve;IfcPositiveRatioMeasure;AutomaticCondensateDischarge;IfcBoolean;CloggingIndicator;IfcBoolean +Pset_FireSuppressionTerminalTypeBreechingInlet;InletDiameter;IfcPositiveLengthMeasure;OutletDiameter;IfcPositiveLengthMeasure;HasCaps;IfcBoolean +Pset_FireSuppressionTerminalTypeCommon;Reference;IfcIdentifier +Pset_FireSuppressionTerminalTypeFireHydrant;PumperConnectionSize;IfcPositiveLengthMeasure;NumberOfHoseConnections;IfcInteger;HoseConnectionSize;IfcPositiveLengthMeasure;DischargeFlowRate;IfcVolumetricFlowRateMeasure;FlowClass;IfcLabel;WaterIsPotable;IfcBoolean;PressureRating;IfcPressureMeasure;BodyColor;IfcText;CapColor;IfcText +Pset_FireSuppressionTerminalTypeHoseReel;InletConnectionSize;IfcPositiveLengthMeasure;HoseDiameter;IfcPositiveLengthMeasure;HoseLength;IfcPositiveLengthMeasure;ClassOfService;IfcLabel;ClassificationAuthority;IfcLabel +Pset_FireSuppressionTerminalTypeSprinkler;ActivationTemperature;IfcThermodynamicTemperatureMeasure;CoverageArea;IfcAreaMeasure;HasDeflector;IfcBoolean;DischargeFlowRate;IfcVolumetricFlowRateMeasure;ResidualFlowingPressure;IfcPressureMeasure;DischargeCoefficient;IfcReal;MaximumWorkingPressure;IfcPressureMeasure;ConnectionSize;IfcPositiveLengthMeasure +Pset_FlowInstrumentTypeCommon;Reference;IfcIdentifier +Pset_FlowInstrumentTypePressureGauge;DisplaySize;IfcPositiveLengthMeasure +Pset_FlowInstrumentTypeThermometer;DisplaySize;IfcPositiveLengthMeasure +Pset_FlowMeterTypeCommon;Reference;IfcIdentifier;RemoteReading;IfcBoolean +Pset_FlowMeterTypeEnergyMeter;NominalCurrent;IfcElectricCurrentMeasure;MaximumCurrent;IfcElectricCurrentMeasure;MultipleTarriff;IfcBoolean +Pset_FlowMeterTypeGasMeter;ConnectionSize;IfcPositiveLengthMeasure;MaximumFlowRate;IfcVolumetricFlowRateMeasure;MaximumPressureLoss;IfcPressureMeasure +Pset_FlowMeterTypeOilMeter;ConnectionSize;IfcPositiveLengthMeasure;MaximumFlowRate;IfcVolumetricFlowRateMeasure +Pset_FlowMeterTypeWaterMeter;ConnectionSize;IfcPositiveLengthMeasure;MaximumFlowRate;IfcVolumetricFlowRateMeasure;MaximumPressureLoss;IfcPressureMeasure +Pset_FootingCommon;Reference;IfcIdentifier;LoadBearing;IfcBoolean +Pset_FurnitureTypeChair;SeatingHeight;IfcPositiveLengthMeasure;HighestSeatingHeight;IfcPositiveLengthMeasure;LowestSeatingHeight;IfcPositiveLengthMeasure +Pset_FurnitureTypeCommon;Reference;IfcIdentifier;Style;IfcLabel;NominalHeight;IfcPositiveLengthMeasure;NominalLength;IfcPositiveLengthMeasure;NominalDepth;IfcPositiveLengthMeasure;MainColor;IfcLabel;IsBuiltIn;IfcBoolean +Pset_FurnitureTypeDesk;WorksurfaceArea;IfcAreaMeasure +Pset_FurnitureTypeFileCabinet;WithLock;IfcBoolean +Pset_FurnitureTypeTable;WorksurfaceArea;IfcAreaMeasure;NumberOfChairs;IfcInteger +Pset_HeatExchangerTypeCommon;Reference;IfcIdentifier +Pset_HeatExchangerTypePlate;NumberOfPlates;IfcInteger +Pset_HumidifierTypeCommon;Reference;IfcIdentifier;Weight;IfcMassMeasure;NominalMoistureGain;IfcMassFlowRateMeasure;NominalAirFlowRate;IfcVolumetricFlowRateMeasure;WaterRequirement;IfcVolumetricFlowRateMeasure;SaturationEfficiencyCurve;IfcNormalisedRatioMeasure;AirPressureDropCurve;IfcPressureMeasure +Pset_InterceptorTypeCommon;Reference;IfcIdentifier;NominalBodyLength;IfcPositiveLengthMeasure;NominalBodyWidth;IfcPositiveLengthMeasure;NominalBodyDepth;IfcPositiveLengthMeasure;InletConnectionSize;IfcPositiveLengthMeasure;OutletConnectionSize;IfcPositiveLengthMeasure;CoverLength;IfcPositiveLengthMeasure;CoverWidth;IfcPositiveLengthMeasure;VentilatingPipeSize;IfcPositiveLengthMeasure +Pset_JunctionBoxTypeCommon;Reference;IfcIdentifier;NumberOfGangs;IfcInteger;ClearDepth;IfcPositiveLengthMeasure;IsExternal;IfcBoolean;IP_Code;IfcLabel +Pset_LampTypeCommon;Reference;IfcIdentifier;ContributedLuminousFlux;IfcLuminousFluxMeasure;LightEmitterNominalPower;IfcPowerMeasure;LampMaintenanceFactor;IfcReal;ColorAppearance;IfcLabel;Spectrum;IfcNumericMeasure;ColorTemperature;IfcThermodynamicTemperatureMeasure;ColorRenderingIndex;IfcInteger +Pset_LandRegistration;LandID;IfcIdentifier;IsPermanentID;IfcBoolean;LandTitleID;IfcIdentifier +Pset_LightFixtureTypeCommon;Reference;IfcIdentifier;NumberOfSources;IfcInteger;TotalWattage;IfcPowerMeasure;MaintenanceFactor;IfcReal;MaximumPlenumSensibleLoad;IfcPowerMeasure;MaximumSpaceSensibleLoad;IfcPowerMeasure;SensibleLoadToRadiant;IfcPositiveRatioMeasure +Pset_LightFixtureTypeSecurityLighting;FixtureHeight;IfcPositiveLengthMeasure +Pset_ManufacturerOccurrence;AcquisitionDate;IfcDate;BarCode;IfcIdentifier;SerialNumber;IfcIdentifier;BatchReference;IfcIdentifier +Pset_ManufacturerTypeInformation;GlobalTradeItemNumber;IfcIdentifier;ArticleNumber;IfcIdentifier;ModelReference;IfcLabel;ModelLabel;IfcLabel;Manufacturer;IfcLabel;ProductionYear;IfcLabel +Pset_MaterialCombustion;SpecificHeatCapacity;IfcSpecificHeatCapacityMeasure;N20Content;IfcPositiveRatioMeasure;COContent;IfcPositiveRatioMeasure;CO2Content;IfcPositiveRatioMeasure +Pset_MaterialCommon;MolecularWeight;IfcMolecularWeightMeasure;Porosity;IfcNormalisedRatioMeasure;MassDensity;IfcMassDensityMeasure +Pset_MaterialConcrete;CompressiveStrength;IfcPressureMeasure;MaxAggregateSize;IfcPositiveLengthMeasure;AdmixturesDescription;IfcText;Workability;IfcText;WaterImpermeability;IfcText;ProtectivePoreRatio;IfcNormalisedRatioMeasure +Pset_MaterialEnergy;ViscosityTemperatureDerivative;IfcReal;MoistureCapacityThermalGradient;IfcReal;ThermalConductivityTemperatureDerivative;IfcReal;SpecificHeatTemperatureDerivative;IfcReal;VisibleRefractionIndex;IfcReal;SolarRefractionIndex;IfcReal;GasPressure;IfcPressureMeasure +Pset_MaterialFuel;CombustionTemperature;IfcThermodynamicTemperatureMeasure;CarbonContent;IfcPositiveRatioMeasure;LowerHeatingValue;IfcHeatingValueMeasure;HigherHeatingValue;IfcHeatingValueMeasure +Pset_MaterialHygroscopic;UpperVaporResistanceFactor;IfcPositiveRatioMeasure;LowerVaporResistanceFactor;IfcPositiveRatioMeasure;IsothermalMoistureCapacity;IfcIsothermalMoistureCapacityMeasure;VaporPermeability;IfcVaporPermeabilityMeasure;MoistureDiffusivity;IfcMoistureDiffusivityMeasure +Pset_MaterialMechanical;DynamicViscosity;IfcDynamicViscosityMeasure;YoungModulus;IfcModulusOfElasticityMeasure;ShearModulus;IfcModulusOfElasticityMeasure;PoissonRatio;IfcPositiveRatioMeasure;ThermalExpansionCoefficient;IfcThermalExpansionCoefficientMeasure +Pset_MaterialOptical;VisibleTransmittance;IfcPositiveRatioMeasure;SolarTransmittance;IfcPositiveRatioMeasure;ThermalIrTransmittance;IfcPositiveRatioMeasure;ThermalIrEmissivityBack;IfcPositiveRatioMeasure;ThermalIrEmissivityFront;IfcPositiveRatioMeasure;VisibleReflectanceBack;IfcPositiveRatioMeasure;VisibleReflectanceFront;IfcPositiveRatioMeasure;SolarReflectanceBack;IfcPositiveRatioMeasure;SolarReflectanceFront;IfcPositiveRatioMeasure +Pset_MaterialSteel;YieldStress;IfcPressureMeasure;UltimateStress;IfcPressureMeasure;UltimateStrain;IfcPositiveRatioMeasure;HardeningModule;IfcModulusOfElasticityMeasure;ProportionalStress;IfcPressureMeasure;PlasticStrain;IfcPositiveRatioMeasure;Relaxations;IfcNormalisedRatioMeasure +Pset_MaterialThermal;SpecificHeatCapacity;IfcSpecificHeatCapacityMeasure;BoilingPoint;IfcThermodynamicTemperatureMeasure;FreezingPoint;IfcThermodynamicTemperatureMeasure;ThermalConductivity;IfcThermalConductivityMeasure +Pset_MaterialWater;IsPotable;IfcBoolean;Hardness;IfcIonConcentrationMeasure;AlkalinityConcentration;IfcIonConcentrationMeasure;AcidityConcentration;IfcIonConcentrationMeasure;ImpuritiesContent;IfcNormalisedRatioMeasure;DissolvedSolidsContent;IfcNormalisedRatioMeasure;PHLevel;IfcPHMeasure +Pset_MaterialWood;Species;IfcLabel;StrengthGrade;IfcLabel;AppearanceGrade;IfcLabel;Layup;IfcLabel;Layers;IfcInteger;Plies;IfcInteger;MoistureContent;IfcPositiveRatioMeasure;DimensionalChangeCoefficient;IfcPositiveRatioMeasure;ThicknessSwelling;IfcPositiveRatioMeasure +Pset_MaterialWoodBasedBeam;ApplicableStructuralDesignMethod;IfcLabel;InPlane;IfcModulusOfElasticityMeasure;YoungModulusMin;IfcModulusOfElasticityMeasure;YoungModulusPerp;IfcModulusOfElasticityMeasure;YoungModulusPerpMin;IfcModulusOfElasticityMeasure;ShearModulus;IfcModulusOfElasticityMeasure;ShearModulusMin;IfcModulusOfElasticityMeasure;BendingStrength;IfcPressureMeasure;TensileStrength;IfcPressureMeasure;TensileStrengthPerp;IfcPressureMeasure;CompStrength;IfcPressureMeasure;CompStrengthPerp;IfcPressureMeasure;RaisedCompStrengthPerp;IfcPressureMeasure;ShearStrength;IfcPressureMeasure;TorsionalStrength;IfcPressureMeasure;ReferenceDepth;IfcPositiveLengthMeasure;InstabilityFactors;IfcPositiveRatioMeasure;InPlaneNegative;IfcModulusOfElasticityMeasure;YoungModulusMin;IfcModulusOfElasticityMeasure;YoungModulusPerp;IfcModulusOfElasticityMeasure;YoungModulusPerpMin;IfcModulusOfElasticityMeasure;ShearModulus;IfcModulusOfElasticityMeasure;ShearModulusMin;IfcModulusOfElasticityMeasure;BendingStrength;IfcPressureMeasure;TensileStrength;IfcPressureMeasure;TensileStrengthPerp;IfcPressureMeasure;CompStrength;IfcPressureMeasure;CompStrengthPerp;IfcPressureMeasure;RaisedCompStrengthPerp;IfcPressureMeasure;ShearStrength;IfcPressureMeasure;TorsionalStrength;IfcPressureMeasure;ReferenceDepth;IfcPositiveLengthMeasure;InstabilityFactors;IfcPositiveRatioMeasure;OutOfPlane;IfcModulusOfElasticityMeasure;YoungModulusMin;IfcModulusOfElasticityMeasure;YoungModulusPerp;IfcModulusOfElasticityMeasure;YoungModulusPerpMin;IfcModulusOfElasticityMeasure;ShearModulus;IfcModulusOfElasticityMeasure;ShearModulusMin;IfcModulusOfElasticityMeasure;BendingStrength;IfcPressureMeasure;TensileStrength;IfcPressureMeasure;TensileStrengthPerp;IfcPressureMeasure;CompStrength;IfcPressureMeasure;CompStrengthPerp;IfcPressureMeasure;RaisedCompStrengthPerp;IfcPressureMeasure;ShearStrength;IfcPressureMeasure;TorsionalStrength;IfcPressureMeasure;ReferenceDepth;IfcPositiveLengthMeasure;InstabilityFactors;IfcPositiveRatioMeasure +Pset_MaterialWoodBasedPanel;ApplicableStructuralDesignMethod;IfcLabel;InPlane;IfcModulusOfElasticityMeasure;YoungModulusTension;IfcModulusOfElasticityMeasure;YoungModulusCompression;IfcModulusOfElasticityMeasure;ShearModulus;IfcModulusOfElasticityMeasure;BendingStrength;IfcPressureMeasure;CompressiveStrength;IfcPressureMeasure;TensileStrength;IfcPressureMeasure;ShearStrength;IfcPressureMeasure;BearingStrength;IfcPressureMeasure;RaisedCompressiveStrength;IfcPressureMeasure;ReferenceDepth;IfcPositiveLengthMeasure;OutOfPlane;IfcModulusOfElasticityMeasure;YoungModulusTension;IfcModulusOfElasticityMeasure;YoungModulusCompression;IfcModulusOfElasticityMeasure;ShearModulus;IfcModulusOfElasticityMeasure;BendingStrength;IfcPressureMeasure;CompressiveStrength;IfcPressureMeasure;TensileStrength;IfcPressureMeasure;ShearStrength;IfcPressureMeasure;BearingStrength;IfcPressureMeasure;RaisedCompressiveStrength;IfcPressureMeasure;ReferenceDepth;IfcPositiveLengthMeasure;OutOfPlaneNegative;IfcModulusOfElasticityMeasure;YoungModulusTension;IfcModulusOfElasticityMeasure;YoungModulusCompression;IfcModulusOfElasticityMeasure;ShearModulus;IfcModulusOfElasticityMeasure;BendingStrength;IfcPressureMeasure;CompressiveStrength;IfcPressureMeasure;TensileStrength;IfcPressureMeasure;ShearStrength;IfcPressureMeasure;BearingStrength;IfcPressureMeasure;RaisedCompressiveStrength;IfcPressureMeasure;ReferenceDepth;IfcPositiveLengthMeasure +Pset_MechanicalFastenerAnchorBolt;AnchorBoltLength;IfcPositiveLengthMeasure;AnchorBoltDiameter;IfcPositiveLengthMeasure;AnchorBoltThreadLength;IfcPositiveLengthMeasure;AnchorBoltProtrusionLength;IfcPositiveLengthMeasure +Pset_MechanicalFastenerBolt;ThreadDiameter;IfcPositiveLengthMeasure;ThreadLength;IfcPositiveLengthMeasure;NutsCount;IfcCountMeasure;WashersCount;IfcCountMeasure;HeadShape;IfcLabel;KeyShape;IfcLabel;NutShape;IfcLabel;WasherShape;IfcLabel +Pset_MedicalDeviceTypeCommon;Reference;IfcIdentifier +Pset_MemberCommon;Reference;IfcIdentifier;Span;IfcPositiveLengthMeasure;Slope;IfcPlaneAngleMeasure;Roll;IfcPlaneAngleMeasure;IsExternal;IfcBoolean;ThermalTransmittance;IfcThermalTransmittanceMeasure;LoadBearing;IfcBoolean;FireRating;IfcLabel +Pset_MotorConnectionTypeCommon;Reference;IfcIdentifier +Pset_OpeningElementCommon;Reference;IfcIdentifier;Purpose;IfcLabel;FireExit;IfcBoolean;ProtectedOpening;IfcBoolean +Pset_OutletTypeCommon;Reference;IfcIdentifier;IsPluggableOutlet;IfcLogical;NumberOfSockets;IfcInteger +Pset_OutsideDesignCriteria;HeatingDryBulb;IfcThermodynamicTemperatureMeasure;HeatingWetBulb;IfcThermodynamicTemperatureMeasure;HeatingDesignDay;IfcDateTime;CoolingDryBulb;IfcThermodynamicTemperatureMeasure;CoolingWetBulb;IfcThermodynamicTemperatureMeasure;CoolingDesignDay;IfcDateTime;WeatherDataStation;IfcText;WeatherDataDate;IfcDateTime;PrevailingWindDirection;IfcPlaneAngleMeasure;PrevailingWindVelocity;IfcLinearVelocityMeasure +Pset_PackingInstructions;SpecialInstructions;IfcText +Pset_Permit;EscortRequirement;IfcBoolean;StartDate;IfcDateTime;EndDate;IfcDateTime;SpecialRequirements;IfcText +Pset_PileCommon;Reference;IfcIdentifier;LoadBearing;IfcBoolean +Pset_PipeConnectionFlanged;FlangeTable;IfcLabel;FlangeStandard;IfcLabel;BoreSize;IfcPositiveLengthMeasure;FlangeDiameter;IfcPositiveLengthMeasure;FlangeThickness;IfcPositiveLengthMeasure;NumberOfBoltholes;IfcInteger;BoltSize;IfcPositiveLengthMeasure;BoltholePitch;IfcPositiveLengthMeasure +Pset_PipeFittingOccurrence;InteriorRoughnessCoefficient;IfcPositiveLengthMeasure;Color;IfcLabel +Pset_PipeFittingTypeBend;BendAngle;IfcPositivePlaneAngleMeasure;BendRadius;IfcPositiveLengthMeasure +Pset_PipeFittingTypeCommon;Reference;IfcIdentifier;PressureClass;IfcPressureMeasure;PressureRange;IfcPressureMeasure;TemperatureRange;IfcThermodynamicTemperatureMeasure;FittingLossFactor;IfcReal +Pset_PipeFittingTypeJunction;JunctionLeftAngle;IfcPositivePlaneAngleMeasure;JunctionLeftRadius;IfcPositiveLengthMeasure;JunctionRightAngle;IfcPositivePlaneAngleMeasure;JunctionRightRadius;IfcPositiveLengthMeasure +Pset_PipeSegmentOccurrence;InteriorRoughnessCoefficient;IfcPositiveLengthMeasure;Color;IfcLabel;Gradient;IfcPositiveRatioMeasure;InvertElevation;IfcLengthMeasure +Pset_PipeSegmentTypeCommon;Reference;IfcIdentifier;WorkingPressure;IfcPressureMeasure;PressureRange;IfcPressureMeasure;TemperatureRange;IfcThermodynamicTemperatureMeasure;NominalDiameter;IfcPositiveLengthMeasure;InnerDiameter;IfcPositiveLengthMeasure;OuterDiameter;IfcPositiveLengthMeasure +Pset_PipeSegmentTypeCulvert;InternalWidth;IfcLengthMeasure;ClearDepth;IfcLengthMeasure +Pset_PipeSegmentTypeGutter;Slope;IfcPlaneAngleMeasure;FlowRating;IfcVolumetricFlowRateMeasure +Pset_PlateCommon;Reference;IfcIdentifier;AcousticRating;IfcLabel;IsExternal;IfcBoolean;ThermalTransmittance;IfcThermalTransmittanceMeasure;LoadBearing;IfcBoolean;FireRating;IfcLabel +Pset_PrecastConcreteElementFabrication;TypeDesignator;IfcLabel;ProductionLotId;IfcIdentifier;SerialNumber;IfcIdentifier;PieceMark;IfcLabel;AsBuiltLocationNumber;IfcLabel;ActualProductionDate;IfcDateTime;ActualErectionDate;IfcDateTime +Pset_PrecastConcreteElementGeneral;TypeDesignator;IfcLabel;CornerChamfer;IfcPositiveLengthMeasure;ManufacturingToleranceClass;IfcLabel;FormStrippingStrength;IfcPressureMeasure;LiftingStrength;IfcPressureMeasure;ReleaseStrength;IfcPressureMeasure;MinimumAllowableSupportLength;IfcPositiveLengthMeasure;InitialTension;IfcPressureMeasure;TendonRelaxation;IfcPositiveRatioMeasure;TransportationStrength;IfcPressureMeasure;SupportDuringTransportDescription;IfcText;HollowCorePlugging;IfcLabel;CamberAtMidspan;IfcRatioMeasure;BatterAtStart;IfcPlaneAngleMeasure;BatterAtEnd;IfcPlaneAngleMeasure;Twisting;IfcPlaneAngleMeasure;Shortening;IfcRatioMeasure;PieceMark;IfcLabel;DesignLocationNumber;IfcLabel +Pset_PrecastSlab;TypeDesignator;IfcLabel;ToppingType;IfcLabel;EdgeDistanceToFirstAxis;IfcPositiveLengthMeasure;DistanceBetweenComponentAxes;IfcPositiveLengthMeasure;AngleToFirstAxis;IfcPlaneAngleMeasure;AngleBetweenComponentAxes;IfcPlaneAngleMeasure;NominalThickness;IfcPositiveLengthMeasure;NominalToppingThickness;IfcPositiveLengthMeasure +Pset_ProfileArbitraryDoubleT;OverallWidth;IfcPositiveLengthMeasure;LeftFlangeWidth;IfcPositiveLengthMeasure;RightFlangeWidth;IfcPositiveLengthMeasure;OverallDepth;IfcPositiveLengthMeasure;FlangeDepth;IfcPositiveLengthMeasure;FlangeDraft;IfcNonNegativeLengthMeasure;FlangeChamfer;IfcNonNegativeLengthMeasure;FlangeBaseFillet;IfcNonNegativeLengthMeasure;FlangeTopFillet;IfcNonNegativeLengthMeasure;StemBaseWidth;IfcPositiveLengthMeasure;StemTopWidth;IfcPositiveLengthMeasure;StemBaseChamfer;IfcNonNegativeLengthMeasure;StemTopChamfer;IfcNonNegativeLengthMeasure;StemBaseFillet;IfcNonNegativeLengthMeasure;StemTopFillet;IfcNonNegativeLengthMeasure +Pset_ProfileArbitraryHollowCore;OverallWidth;IfcPositiveLengthMeasure;OverallDepth;IfcPositiveLengthMeasure;EdgeDraft;IfcNonNegativeLengthMeasure;DraftBaseOffset;IfcNonNegativeLengthMeasure;DraftSideOffset;IfcNonNegativeLengthMeasure;BaseChamfer;IfcNonNegativeLengthMeasure;KeyDepth;IfcNonNegativeLengthMeasure;KeyHeight;IfcNonNegativeLengthMeasure;KeyOffset;IfcNonNegativeLengthMeasure;BottomCover;IfcPositiveLengthMeasure;CoreSpacing;IfcPositiveLengthMeasure;CoreBaseHeight;IfcPositiveLengthMeasure;CoreMiddleHeight;IfcPositiveLengthMeasure;CoreTopHeight;IfcPositiveLengthMeasure;CoreBaseWidth;IfcPositiveLengthMeasure;CoreTopWidth;IfcPositiveLengthMeasure;CenterCoreSpacing;IfcPositiveLengthMeasure;CenterCoreBaseHeight;IfcPositiveLengthMeasure;CenterCoreMiddleHeight;IfcPositiveLengthMeasure;CenterCoreTopHeight;IfcPositiveLengthMeasure;CenterCoreBaseWidth;IfcPositiveLengthMeasure;CenterCoreTopWidth;IfcPositiveLengthMeasure;NumberOfCores;IfcCountMeasure +Pset_ProfileMechanical;MassPerLength;IfcMassPerLengthMeasure;CrossSectionArea;IfcAreaMeasure;Perimeter;IfcPositiveLengthMeasure;MinimumPlateThickness;IfcPositiveLengthMeasure;MaximumPlateThickness;IfcPositiveLengthMeasure;CentreOfGravityInX;IfcLengthMeasure;CentreOfGravityInY;IfcLengthMeasure;ShearCentreZ;IfcLengthMeasure;ShearCentreY;IfcLengthMeasure;MomentOfInertiaY;IfcMomentOfInertiaMeasure;MomentOfInertiaZ;IfcMomentOfInertiaMeasure;MomentOfInertiaYZ;IfcMomentOfInertiaMeasure;TorsionalConstantX;IfcMomentOfInertiaMeasure;WarpingConstant;IfcWarpingConstantMeasure;ShearDeformationAreaZ;IfcAreaMeasure;ShearDeformationAreaY;IfcAreaMeasure;MaximumSectionModulusY;IfcSectionModulusMeasure;MinimumSectionModulusY;IfcSectionModulusMeasure;MaximumSectionModulusZ;IfcSectionModulusMeasure;MinimumSectionModulusZ;IfcSectionModulusMeasure;TorsionalSectionModulus;IfcSectionModulusMeasure;ShearAreaZ;IfcAreaMeasure;ShearAreaY;IfcAreaMeasure;PlasticShapeFactorY;IfcPositiveRatioMeasure;PlasticShapeFactorZ;IfcPositiveRatioMeasure +Pset_ProjectOrderChangeOrder;ReasonForChange;IfcText;BudgetSource;IfcText +Pset_ProjectOrderMaintenanceWorkOrder;ProductDescription;IfcText;WorkTypeRequested;IfcText;ContractualType;IfcText;IfNotAccomplished;IfcText;ScheduledFrequency;IfcTimeMeasure +Pset_ProjectOrderMoveOrder;SpecialInstructions;IfcText +Pset_ProjectOrderPurchaseOrder;IsFOB;IfcBoolean;ShipMethod;IfcText +Pset_ProjectOrderWorkOrder;ProductDescription;IfcText;WorkTypeRequested;IfcText;ContractualType;IfcText;IfNotAccomplished;IfcText +Pset_PropertyAgreement;Identifier;IfcIdentifier;Version;IfcLabel;VersionDate;IfcDate;PropertyName;IfcLabel;CommencementDate;IfcDate;TerminationDate;IfcDate;Duration;IfcDuration;Options;IfcText;ConditionCommencement;IfcText;Restrictions;IfcText;ConditionTermination;IfcText +Pset_ProtectiveDeviceBreakerUnitI2TCurve;NominalCurrent;IfcElectricCurrentMeasure;BreakerUnitCurve;IfcReal +Pset_ProtectiveDeviceBreakerUnitI2TFuseCurve;BreakerUnitFuseMeltingCurve;IfcReal;BreakerUnitFuseBreakingingCurve;IfcReal +Pset_ProtectiveDeviceBreakerUnitIPICurve;NominalCurrent;IfcElectricCurrentMeasure;BreakerUnitIPICurve;IfcElectricCurrentMeasure +Pset_ProtectiveDeviceBreakerUnitTypeMCB;PowerLoss;IfcPowerMeasure;NominalCurrents;IfcElectricCurrentMeasure;ICU60947;IfcElectricCurrentMeasure;ICS60947;IfcElectricCurrentMeasure;ICN60898;IfcElectricCurrentMeasure;ICS60898;IfcElectricCurrentMeasure +Pset_ProtectiveDeviceBreakerUnitTypeMotorProtection;PerformanceClasses;IfcLabel;ICU60947;IfcElectricCurrentMeasure;ICS60947;IfcElectricCurrentMeasure;ICW60947;IfcElectricCurrentMeasure;ICM60947;IfcElectricCurrentMeasure +Pset_ProtectiveDeviceOccurrence;LongTimeFunction;IfcBoolean;ShortTimeFunction;IfcBoolean;ShortTimei2tFunction;IfcBoolean;GroundFaultFunction;IfcBoolean;GroundFaulti2tFunction;IfcBoolean;LongTimeCurrentSetValue;IfcElectricCurrentMeasure;ShortTimeCurrentSetValue;IfcElectricCurrentMeasure;InstantaneousCurrentSetValue;IfcElectricCurrentMeasure;GroundFaultCurrentSetValue;IfcElectricCurrentMeasure;LongTimeDelay;IfcTimeMeasure;ShortTimeTrippingTime;IfcTimeMeasure;InstantaneousTrippingTime;IfcTimeMeasure;GroundFaultTrippingTime;IfcTimeMeasure +Pset_ProtectiveDeviceTrippingCurve;TrippingCurve;IfcTimeMeasure +Pset_ProtectiveDeviceTrippingFunctionGCurve;IsSelectable;IfcBoolean;NominalCurrentAdjusted;IfcBoolean;ExternalAdjusted;IfcBoolean;ReleaseCurrent;IfcElectricCurrentMeasure;ReleaseTime;IfcTimeMeasure;CurrentTolerance1;IfcPositiveRatioMeasure;CurrentToleranceLimit1;IfcTimeMeasure;CurrentTolerance2;IfcPositiveRatioMeasure;IsCurrentTolerancePositiveOnly;IfcBoolean;TimeTolerance1;IfcPositiveRatioMeasure;TimeToleranceLimit1;IfcElectricCurrentMeasure;TimeTolerance2;IfcPositiveRatioMeasure;IsTimeTolerancePositiveOnly;IfcBoolean;ReleaseCurrentI2tStart;IfcElectricCurrentMeasure;ReleaseTimeI2tStart;IfcTimeMeasure;ReleaseCurrentI2tEnd;IfcElectricCurrentMeasure;ReleaseTimeI2tEnd;IfcTimeMeasure +Pset_ProtectiveDeviceTrippingFunctionICurve;IsSelectable;IfcBoolean;NominalCurrentAdjusted;IfcBoolean;ReleaseCurrent;IfcElectricCurrentMeasure;ReleaseTime;IfcTimeMeasure;CurrentTolerance1;IfcPositiveRatioMeasure;CurrentToleranceLimit1;IfcTimeMeasure;CurrentTolerance2;IfcPositiveRatioMeasure;IsCurrentTolerancePositiveOnly;IfcBoolean;TimeTolerance1;IfcPositiveRatioMeasure;TimeToleranceLimit1;IfcElectricCurrentMeasure;TimeTolerance2;IfcPositiveRatioMeasure;IsTimeTolerancePositiveOnly;IfcBoolean;MaxAdjustmentX_ICS;IfcElectricCurrentMeasure;IsOffWhenSFunctionOn;IfcBoolean +Pset_ProtectiveDeviceTrippingFunctionLCurve;IsSelectable;IfcBoolean;UpperCurrent1;IfcElectricCurrentMeasure;UpperCurrent2;IfcElectricCurrentMeasure;UpperTime1;IfcTimeMeasure;UpperTime2;IfcTimeMeasure;LowerCurrent1;IfcElectricCurrentMeasure;LowerCurrent2;IfcElectricCurrentMeasure;LowerTime1;IfcTimeMeasure;LowerTime2;IfcTimeMeasure +Pset_ProtectiveDeviceTrippingFunctionSCurve;IsSelectable;IfcBoolean;NominalCurrentAdjusted;IfcBoolean;ReleaseCurrent;IfcElectricCurrentMeasure;ReleaseTime;IfcTimeMeasure;CurrentTolerance1;IfcPositiveRatioMeasure;CurrentToleranceLimit1;IfcTimeMeasure;CurrentTolerance2;IfcPositiveRatioMeasure;IsCurrentTolerancePositiveOnly;IfcBoolean;TimeTolerance1;IfcPositiveRatioMeasure;TimeToleranceLimit1;IfcElectricCurrentMeasure;TimeTolerance2;IfcPositiveRatioMeasure;IsTimeTolerancePositiveOnly;IfcBoolean;ReleaseCurrentI2tStart;IfcElectricCurrentMeasure;ReleaseTimeI2tStart;IfcTimeMeasure;ReleaseCurrentI2tEnd;IfcElectricCurrentMeasure;ReleaseTimeI2tEnd;IfcTimeMeasure;IsOffWhenLfunctionOn;IfcBoolean +Pset_ProtectiveDeviceTrippingUnitCurrentAdjustment;AdjustmentRange;IfcElectricCurrentMeasure;AdjustmentRangeStepValue;IfcElectricCurrentMeasure;AdjustmentValues;IfcElectricCurrentMeasure;AdjustmentDesignation;IfcLabel +Pset_ProtectiveDeviceTrippingUnitTimeAdjustment;AdjustmentRange;IfcTimeMeasure;AdjustmentRangeStepValue;IfcTimeMeasure;AdjustmentValues;IfcTimeMeasure;AdjustmentDesignation;IfcLabel;CurrentForTimeDelay;IfcTimeMeasure +Pset_ProtectiveDeviceTrippingUnitTypeCommon;Reference;IfcIdentifier;Standard;IfcLabel;UseInDiscrimination;IfcBoolean;AtexVerified;IfcBoolean;OldDevice;IfcBoolean;LimitingTerminalSize;IfcAreaMeasure +Pset_ProtectiveDeviceTrippingUnitTypeElectroMagnetic;I1;IfcReal;I2;IfcReal;T2;IfcTimeMeasure;DefinedTemperature;IfcThermodynamicTemperatureMeasure;TemperatureFactor;IfcRatioMeasure;I4;IfcReal;I5;IfcReal;T5;IfcTimeMeasure;CurveDesignation;IfcLabel +Pset_ProtectiveDeviceTrippingUnitTypeElectronic;NominalCurrents;IfcElectricCurrentMeasure;N_Protection;IfcBoolean;N_Protection_50;IfcBoolean;N_Protection_100;IfcBoolean;N_Protection_Select;IfcBoolean +Pset_ProtectiveDeviceTrippingUnitTypeThermal;I1;IfcReal;I2;IfcReal;T2;IfcTimeMeasure;DefinedTemperature;IfcThermodynamicTemperatureMeasure;TemperatureFactor;IfcRatioMeasure;CurveDesignation;IfcLabel +Pset_ProtectiveDeviceTypeCircuitBreaker;PerformanceClasses;IfcLabel;ICU60947;IfcElectricCurrentMeasure;ICS60947;IfcElectricCurrentMeasure;ICW60947;IfcElectricCurrentMeasure;ICM60947;IfcElectricCurrentMeasure +Pset_ProtectiveDeviceTypeCommon;Reference;IfcIdentifier +Pset_ProtectiveDeviceTypeEarthLeakageCircuitBreaker;Sensitivity;IfcElectricCurrentMeasure +Pset_ProtectiveDeviceTypeFuseDisconnector;IC60269;IfcElectricCurrentMeasure;PowerLoss;IfcPowerMeasure +Pset_ProtectiveDeviceTypeResidualCurrentCircuitBreaker;Sensitivity;IfcElectricCurrentMeasure +Pset_ProtectiveDeviceTypeResidualCurrentSwitch;Sensitivity;IfcElectricCurrentMeasure +Pset_PumpOccurrence;ImpellerDiameter;IfcPositiveLengthMeasure +Pset_PumpTypeCommon;Reference;IfcIdentifier;FlowRateRange;IfcMassFlowRateMeasure;FlowResistanceRange;IfcPressureMeasure;ConnectionSize;IfcPositiveLengthMeasure;TemperatureRange;IfcThermodynamicTemperatureMeasure;NetPositiveSuctionHead;IfcPressureMeasure;NominalRotationSpeed;IfcRotationalFrequencyMeasure +Pset_RailingCommon;Reference;IfcIdentifier;Height;IfcPositiveLengthMeasure;Diameter;IfcPositiveLengthMeasure;IsExternal;IfcBoolean +Pset_RampCommon;Reference;IfcIdentifier;RequiredHeadroom;IfcPositiveLengthMeasure;RequiredSlope;IfcPlaneAngleMeasure;HandicapAccessible;IfcBoolean;HasNonSkidSurface;IfcBoolean;FireExit;IfcBoolean;IsExternal;IfcBoolean;ThermalTransmittance;IfcThermalTransmittanceMeasure;LoadBearing;IfcBoolean;FireRating;IfcLabel +Pset_RampFlightCommon;Reference;IfcIdentifier;Headroom;IfcPositiveLengthMeasure;ClearWidth;IfcPositiveLengthMeasure;Slope;IfcPlaneAngleMeasure;CounterSlope;IfcPlaneAngleMeasure +Pset_ReinforcementBarCountOfIndependentFooting;Description;IfcText;Reference;IfcLabel;XDirectionLowerBarCount;IfcInteger;YDirectionLowerBarCount;IfcInteger;XDirectionUpperBarCount;IfcInteger;YDirectionUpperBarCount;IfcInteger +Pset_ReinforcementBarPitchOfBeam;Description;IfcText;Reference;IfcLabel;StirrupBarPitch;IfcPositiveLengthMeasure;SpacingBarPitch;IfcPositiveLengthMeasure +Pset_ReinforcementBarPitchOfColumn;Description;IfcText;Reference;IfcLabel;HoopBarPitch;IfcPositiveLengthMeasure;XDirectionTieHoopBarPitch;IfcPositiveLengthMeasure;XDirectionTieHoopCount;IfcInteger;YDirectionTieHoopBarPitch;IfcPositiveLengthMeasure;YDirectionTieHoopCount;IfcInteger +Pset_ReinforcementBarPitchOfContinuousFooting;Description;IfcText;Reference;IfcLabel;CrossingUpperBarPitch;IfcPositiveLengthMeasure;CrossingLowerBarPitch;IfcPositiveLengthMeasure +Pset_ReinforcementBarPitchOfSlab;Description;IfcText;Reference;IfcLabel;LongOutsideTopBarPitch;IfcPositiveLengthMeasure;LongInsideCenterTopBarPitch;IfcPositiveLengthMeasure;LongInsideEndTopBarPitch;IfcPositiveLengthMeasure;ShortOutsideTopBarPitch;IfcPositiveLengthMeasure;ShortInsideCenterTopBarPitch;IfcPositiveLengthMeasure;ShortInsideEndTopBarPitch;IfcPositiveLengthMeasure;LongOutsideLowerBarPitch;IfcPositiveLengthMeasure;LongInsideCenterLowerBarPitch;IfcPositiveLengthMeasure;LongInsideEndLowerBarPitch;IfcPositiveLengthMeasure;ShortOutsideLowerBarPitch;IfcPositiveLengthMeasure;ShortInsideCenterLowerBarPitch;IfcPositiveLengthMeasure;ShortInsideEndLowerBarPitch;IfcPositiveLengthMeasure +Pset_ReinforcementBarPitchOfWall;Description;IfcText;Reference;IfcLabel;VerticalBarPitch;IfcPositiveLengthMeasure;HorizontalBarPitch;IfcPositiveLengthMeasure;SpacingBarPitch;IfcPositiveLengthMeasure +Pset_Risk;NatureOfRisk;IfcLabel;SubNatureOfRisk1;IfcLabel;SubNatureOfRisk2;IfcLabel;RiskCause;IfcText;AffectsSurroundings;IfcBoolean;PreventiveMeassures;IfcText +Pset_RoofCommon;Reference;IfcIdentifier;AcousticRating;IfcLabel;IsExternal;IfcBoolean;ThermalTransmittance;IfcThermalTransmittanceMeasure;LoadBearing;IfcBoolean;FireRating;IfcLabel +Pset_SanitaryTerminalTypeBath;DrainSize;IfcPositiveLengthMeasure;HasGrabHandles;IfcBoolean +Pset_SanitaryTerminalTypeBidet;SpilloverLevel;IfcPositiveLengthMeasure;DrainSize;IfcPositiveLengthMeasure +Pset_SanitaryTerminalTypeCistern;CisternCapacity;IfcVolumeMeasure;IsSingleFlush;IfcBoolean;FlushRate;IfcVolumeMeasure;IsAutomaticFlush;IfcBoolean +Pset_SanitaryTerminalTypeCommon;Reference;IfcIdentifier;NominalLength;IfcPositiveLengthMeasure;NominalWidth;IfcPositiveLengthMeasure;NominalDepth;IfcPositiveLengthMeasure;Color;IfcLabel +Pset_SanitaryTerminalTypeSanitaryFountain;DrainSize;IfcPositiveLengthMeasure +Pset_SanitaryTerminalTypeShower;HasTray;IfcBoolean;ShowerHeadDescription;IfcText;DrainSize;IfcPositiveLengthMeasure +Pset_SanitaryTerminalTypeSink;Color;IfcLabel;DrainSize;IfcPositiveLengthMeasure;MountingOffset;IfcLengthMeasure +Pset_SanitaryTerminalTypeToiletPan;SpilloverLevel;IfcPositiveLengthMeasure +Pset_SanitaryTerminalTypeUrinal;SpilloverLevel;IfcPositiveLengthMeasure +Pset_SanitaryTerminalTypeWashHandBasin;DrainSize;IfcPositiveLengthMeasure;MountingOffset;IfcLengthMeasure +Pset_SensorTypeCO2Sensor;SetPointConcentration;IfcPositiveRatioMeasure +Pset_SensorTypeCommon;Reference;IfcIdentifier +Pset_SensorTypeConductanceSensor;SetPointConductance;IfcElectricConductanceMeasure +Pset_SensorTypeContactSensor;SetPointContact;IfcInteger +Pset_SensorTypeFireSensor;FireSensorSetPoint;IfcThermodynamicTemperatureMeasure;AccuracyOfFireSensor;IfcThermodynamicTemperatureMeasure;TimeConstant;IfcTimeMeasure +Pset_SensorTypeFlowSensor;SetPointFlow;IfcVolumetricFlowRateMeasure +Pset_SensorTypeFrostSensor;SetPointFrost;IfcPositiveRatioMeasure +Pset_SensorTypeGasSensor;GasDetected;IfcLabel;SetPointConcentration;IfcPositiveRatioMeasure;CoverageArea;IfcAreaMeasure +Pset_SensorTypeHeatSensor;CoverageArea;IfcAreaMeasure;SetPointTemperature;IfcThermodynamicTemperatureMeasure;RateOfTemperatureRise;IfcTemperatureRateOfChangeMeasure +Pset_SensorTypeHumiditySensor;SetPointHumidity;IfcPositiveRatioMeasure +Pset_SensorTypeIdentifierSensor;SetPointIdentifier;IfcIdentifier +Pset_SensorTypeIonConcentrationSensor;SubstanceDetected;IfcLabel;SetPointConcentration;IfcIonConcentrationMeasure +Pset_SensorTypeLevelSensor;SetPointLevel;IfcPositiveLengthMeasure +Pset_SensorTypeLightSensor;SetPointIlluminance;IfcIlluminanceMeasure +Pset_SensorTypeMoistureSensor;SetPointMoisture;IfcPositiveRatioMeasure +Pset_SensorTypeMovementSensor;SetPointMovement;IfcPositiveRatioMeasure +Pset_SensorTypePHSensor;SetPointPH;IfcPHMeasure +Pset_SensorTypePressureSensor;SetPointPressure;IfcPressureMeasure;IsSwitch;IfcBoolean +Pset_SensorTypeRadiationSensor;SetPointRadiation;IfcPowerMeasure +Pset_SensorTypeRadioactivitySensor;SetPointRadioactivity;IfcRadioActivityMeasure +Pset_SensorTypeSmokeSensor;CoverageArea;IfcAreaMeasure;SetPointConcentration;IfcPositiveRatioMeasure;HasBuiltInAlarm;IfcBoolean +Pset_SensorTypeSoundSensor;SetPointSound;IfcSoundPressureMeasure +Pset_SensorTypeTemperatureSensor;SetPointTemperature;IfcThermodynamicTemperatureMeasure +Pset_SensorTypeWindSensor;SetPointSpeed;IfcLinearVelocityMeasure +Pset_ServiceLife;ServiceLifeDuration;IfcDuration;MeanTimeBetweenFailure;IfcDuration +Pset_ServiceLifeFactors;QualityOfComponents;IfcPositiveRatioMeasure;DesignLevel;IfcPositiveRatioMeasure;WorkExecutionLevel;IfcPositiveRatioMeasure;IndoorEnvironment;IfcPositiveRatioMeasure;OutdoorEnvironment;IfcPositiveRatioMeasure;InUseConditions;IfcPositiveRatioMeasure;MaintenanceLevel;IfcPositiveRatioMeasure +Pset_ShadingDeviceCommon;Reference;IfcIdentifier;MechanicalOperated;IfcBoolean;SolarTransmittance;IfcPositiveRatioMeasure;SolarReflectance;IfcPositiveRatioMeasure;VisibleLightTransmittance;IfcPositiveRatioMeasure;VisibleLightReflectance;IfcPositiveRatioMeasure;ThermalTransmittance;IfcThermalTransmittanceMeasure;IsExternal;IfcBoolean;Roughness;IfcLabel;SurfaceColor;IfcLabel +Pset_SiteCommon;Reference;IfcIdentifier;BuildableArea;IfcAreaMeasure;SiteCoverageRatio;IfcPositiveRatioMeasure;FloorAreaRatio;IfcPositiveRatioMeasure;BuildingHeightLimit;IfcPositiveLengthMeasure;TotalArea;IfcAreaMeasure +Pset_SlabCommon;Reference;IfcIdentifier;AcousticRating;IfcLabel;FireRating;IfcLabel;PitchAngle;IfcPlaneAngleMeasure;Combustible;IfcBoolean;SurfaceSpreadOfFlame;IfcLabel;Compartmentation;IfcBoolean;IsExternal;IfcBoolean;ThermalTransmittance;IfcThermalTransmittanceMeasure;LoadBearing;IfcBoolean +Pset_SolarDeviceTypeCommon;Reference;IfcIdentifier +Pset_SoundAttenuation;SoundFrequency;IfcFrequencyMeasure +Pset_SoundGeneration;SoundCurve;IfcSoundPowerMeasure +Pset_SpaceCommon;Reference;IfcIdentifier;IsExternal;IfcBoolean;GrossPlannedArea;IfcAreaMeasure;NetPlannedArea;IfcAreaMeasure;PubliclyAccessible;IfcBoolean;HandicapAccessible;IfcBoolean +Pset_SpaceCoveringRequirements;FloorCovering;IfcLabel;FloorCoveringThickness;IfcPositiveLengthMeasure;WallCovering;IfcLabel;WallCoveringThickness;IfcPositiveLengthMeasure;CeilingCovering;IfcLabel;CeilingCoveringThickness;IfcPositiveLengthMeasure;SkirtingBoard;IfcLabel;SkirtingBoardHeight;IfcPositiveLengthMeasure;Molding;IfcLabel;MoldingHeight;IfcPositiveLengthMeasure;ConcealedFlooring;IfcBoolean;ConcealedFlooringOffset;IfcNonNegativeLengthMeasure;ConcealedCeiling;IfcBoolean;ConcealedCeilingOffset;IfcNonNegativeLengthMeasure +Pset_SpaceFireSafetyRequirements;FireRiskFactor;IfcLabel;FlammableStorage;IfcBoolean;FireExit;IfcBoolean;SprinklerProtection;IfcBoolean;SprinklerProtectionAutomatic;IfcBoolean;AirPressurization;IfcBoolean +Pset_SpaceHeaterTypeCommon;Reference;IfcIdentifier;BodyMass;IfcMassMeasure;ThermalMassHeatCapacity;IfcReal;OutputCapacity;IfcPowerMeasure;ThermalEfficiency;IfcNormalisedRatioMeasure;NumberOfPanels;IfcInteger;NumberOfSections;IfcInteger +Pset_SpaceHeaterTypeRadiator;TubingLength;IfcPositiveLengthMeasure;WaterContent;IfcMassMeasure +Pset_SpaceLightingRequirements;ArtificialLighting;IfcBoolean;Illuminance;IfcIlluminanceMeasure +Pset_SpaceOccupancyRequirements;OccupancyType;IfcLabel;OccupancyNumber;IfcCountMeasure;OccupancyNumberPeak;IfcCountMeasure;OccupancyTimePerDay;IfcTimeMeasure;AreaPerOccupant;IfcAreaMeasure;MinimumHeadroom;IfcLengthMeasure;IsOutlookDesirable;IfcBoolean +Pset_SpaceParking;ParkingUse;IfcLabel;ParkingUnits;IfcCountMeasure;IsAisle;IfcBoolean;IsOneWay;IfcBoolean +Pset_SpaceThermalDesign;CoolingDesignAirflow;IfcVolumetricFlowRateMeasure;HeatingDesignAirflow;IfcVolumetricFlowRateMeasure;TotalSensibleHeatGain;IfcPowerMeasure;TotalHeatGain;IfcPowerMeasure;TotalHeatLoss;IfcPowerMeasure;CoolingDryBulb;IfcThermodynamicTemperatureMeasure;CoolingRelativeHumidity;IfcPositiveRatioMeasure;HeatingDryBulb;IfcThermodynamicTemperatureMeasure;HeatingRelativeHumidity;IfcPositiveRatioMeasure;VentilationAirFlowrate;IfcVolumetricFlowRateMeasure;ExhaustAirFlowrate;IfcVolumetricFlowRateMeasure;CeilingRAPlenum;IfcBoolean;BoundaryAreaHeatLoss;IfcHeatFluxDensityMeasure +Pset_SpaceThermalLoad;People;IfcPowerMeasure;Lighting;IfcPowerMeasure;EquipmentSensible;IfcPowerMeasure;VentilationIndoorAir;IfcPowerMeasure;VentilationOutdoorAir;IfcPowerMeasure;RecirculatedAir;IfcPowerMeasure;ExhaustAir;IfcPowerMeasure;AirExchangeRate;IfcPowerMeasure;DryBulbTemperature;IfcPowerMeasure;RelativeHumidity;IfcPowerMeasure;InfiltrationSensible;IfcPowerMeasure;TotalSensibleLoad;IfcPowerMeasure;TotalLatentLoad;IfcPowerMeasure;TotalRadiantLoad;IfcPowerMeasure +Pset_SpaceThermalRequirements;SpaceTemperature;IfcThermodynamicTemperatureMeasure;SpaceTemperatureMax;IfcThermodynamicTemperatureMeasure;SpaceTemperatureMin;IfcThermodynamicTemperatureMeasure;SpaceTemperatureSummerMax;IfcThermodynamicTemperatureMeasure;SpaceTemperatureSummerMin;IfcThermodynamicTemperatureMeasure;SpaceTemperatureWinterMax;IfcThermodynamicTemperatureMeasure;SpaceTemperatureWinterMin;IfcThermodynamicTemperatureMeasure;SpaceHumidity;IfcRatioMeasure;SpaceHumidityMax;IfcRatioMeasure;SpaceHumidityMin;IfcRatioMeasure;SpaceHumiditySummer;IfcRatioMeasure;SpaceHumidityWinter;IfcRatioMeasure;DiscontinuedHeating;IfcBoolean;NaturalVentilation;IfcBoolean;NaturalVentilationRate;IfcCountMeasure;MechanicalVentilationRate;IfcCountMeasure;AirConditioning;IfcBoolean;AirConditioningCentral;IfcBoolean +Pset_SpatialZoneCommon;Reference;IfcLabel;IsExternal;IfcBoolean +Pset_StackTerminalTypeCommon;Reference;IfcIdentifier +Pset_StairCommon;Reference;IfcIdentifier;NumberOfRiser;IfcCountMeasure;NumberOfTreads;IfcCountMeasure;RiserHeight;IfcPositiveLengthMeasure;TreadLength;IfcPositiveLengthMeasure;NosingLength;IfcLengthMeasure;WalkingLineOffset;IfcPositiveLengthMeasure;TreadLengthAtOffset;IfcPositiveLengthMeasure;TreadLengthAtInnerSide;IfcPositiveLengthMeasure;WaistThickness;IfcPositiveLengthMeasure;RequiredHeadroom;IfcPositiveLengthMeasure;HandicapAccessible;IfcBoolean;HasNonSkidSurface;IfcBoolean;IsExternal;IfcBoolean;ThermalTransmittance;IfcThermalTransmittanceMeasure;LoadBearing;IfcBoolean;FireRating;IfcLabel;FireExit;IfcBoolean +Pset_StairFlightCommon;Reference;IfcIdentifier;NumberOfRiser;IfcCountMeasure;NumberOfTreads;IfcCountMeasure;RiserHeight;IfcPositiveLengthMeasure;TreadLength;IfcPositiveLengthMeasure;NosingLength;IfcLengthMeasure;WalkingLineOffset;IfcPositiveLengthMeasure;TreadLengthAtOffset;IfcPositiveLengthMeasure;TreadLengthAtInnerSide;IfcPositiveLengthMeasure;Headroom;IfcPositiveLengthMeasure;WaistThickness;IfcPositiveLengthMeasure +Pset_StructuralSurfaceMemberVaryingThickness;Thickness1;IfcPositiveLengthMeasure;Location1Local;IfcLengthMeasure;Location1Global;IfcLengthMeasure;Thickness2;IfcPositiveLengthMeasure;Location2Local;IfcLengthMeasure;Location2Global;IfcLengthMeasure;Thickness3;IfcPositiveLengthMeasure;Location3Local;IfcLengthMeasure;Location3Global;IfcLengthMeasure +Pset_SwitchingDeviceTypeCommon;Reference;IfcIdentifier;NumberOfGangs;IfcInteger;HasLock;IfcBoolean;IsIlluminated;IfcBoolean;Legend;IfcLabel;SetPoint;IfcLabel +Pset_SystemFurnitureElementTypeCommon;IsUsed;IfcBoolean;GroupCode;IfcIdentifier;NominalWidth;IfcPositiveLengthMeasure;NominalHeight;IfcPositiveLengthMeasure;Finishing;IfcLabel +Pset_SystemFurnitureElementTypePanel;HasOpening;IfcBoolean;NominalThickness;IfcPositiveLengthMeasure +Pset_SystemFurnitureElementTypeWorkSurface;UsePurpose;IfcLabel;HangingHeight;IfcPositiveLengthMeasure;NominalThickness;IfcPositiveLengthMeasure;ShapeDescription;IfcLabel +Pset_TankOccurrence;HasLadder;IfcBoolean;HasVisualIndicator;IfcBoolean +Pset_TankTypeCommon;Reference;IfcIdentifier;NominalLengthOrDiameter;IfcPositiveLengthMeasure;NominalWidthOrDiameter;IfcPositiveLengthMeasure;NominalDepth;IfcPositiveLengthMeasure;NominalCapacity;IfcVolumeMeasure;EffectiveCapacity;IfcVolumeMeasure;OperatingWeight;IfcMassMeasure;FirstCurvatureRadius;IfcPositiveLengthMeasure;SecondCurvatureRadius;IfcPositiveLengthMeasure;NumberOfSections;IfcInteger +Pset_TankTypeExpansion;ChargePressure;IfcPressureMeasure;PressureRegulatorSetting;IfcPressureMeasure;ReliefValveSetting;IfcPressureMeasure +Pset_TankTypePreformed;FirstCurvatureRadius;IfcPositiveLengthMeasure;SecondCurvatureRadius;IfcPositiveLengthMeasure +Pset_TankTypePressureVessel;ChargePressure;IfcPressureMeasure;PressureRegulatorSetting;IfcPressureMeasure;ReliefValveSetting;IfcPressureMeasure +Pset_TankTypeSectional;NumberOfSections;IfcInteger;SectionLength;IfcPositiveLengthMeasure;SectionWidth;IfcPositiveLengthMeasure +Pset_ThermalLoadAggregate;TotalCoolingLoad;IfcPowerMeasure;TotalHeatingLoad;IfcPowerMeasure;LightingDiversity;IfcPositiveRatioMeasure;InfiltrationDiversitySummer;IfcPositiveRatioMeasure;InfiltrationDiversityWinter;IfcPositiveRatioMeasure;ApplianceDiversity;IfcPositiveRatioMeasure;LoadSafetyFactor;IfcPositiveRatioMeasure +Pset_ThermalLoadDesignCriteria;OccupancyDiversity;IfcPositiveRatioMeasure;OutsideAirPerPerson;IfcVolumetricFlowRateMeasure;ReceptacleLoadIntensity;IfcReal;AppliancePercentLoadToRadiant;IfcPositiveRatioMeasure;LightingLoadIntensity;IfcReal;LightingPercentLoadToReturnAir;IfcPositiveRatioMeasure +Pset_TransformerTypeCommon;Reference;IfcIdentifier;PrimaryVoltage;IfcElectricVoltageMeasure;SecondaryVoltage;IfcElectricVoltageMeasure;PrimaryCurrent;IfcElectricCurrentMeasure;SecondaryCurrent;IfcElectricCurrentMeasure;PrimaryFrequency;IfcFrequencyMeasure;SecondaryFrequency;IfcFrequencyMeasure;PrimaryApparentPower;IfcPowerMeasure;SecondaryApparentPower;IfcPowerMeasure;MaximumApparentPower;IfcPowerMeasure;ShortCircuitVoltage;IfcComplexNumber;RealImpedanceRatio;IfcRatioMeasure;ImaginaryImpedanceRatio;IfcRatioMeasure;IsNeutralPrimaryTerminalAvailable;IfcBoolean;IsNeutralSecondaryTerminalAvailable;IfcBoolean +Pset_TransportElementCommon;Reference;IfcIdentifier;CapacityPeople;IfcCountMeasure;CapacityWeight;IfcMassMeasure;FireExit;IfcBoolean +Pset_TransportElementElevator;FireFightingLift;IfcBoolean;ClearWidth;IfcPositiveLengthMeasure;ClearDepth;IfcPositiveLengthMeasure;ClearHeight;IfcPositiveLengthMeasure +Pset_TubeBundleTypeCommon;Reference;IfcIdentifier;NumberOfRows;IfcInteger;StaggeredRowSpacing;IfcPositiveLengthMeasure;InLineRowSpacing;IfcPositiveLengthMeasure;NumberOfCircuits;IfcInteger;FoulingFactor;IfcThermalResistanceMeasure;ThermalConductivity;IfcThermalConductivityMeasure;Length;IfcPositiveLengthMeasure;Volume;IfcVolumeMeasure;NominalDiameter;IfcPositiveLengthMeasure;OutsideDiameter;IfcPositiveLengthMeasure;InsideDiameter;IfcPositiveLengthMeasure;HorizontalSpacing;IfcPositiveLengthMeasure;VerticalSpacing;IfcPositiveLengthMeasure;HasTurbulator;IfcBoolean +Pset_TubeBundleTypeFinned;Spacing;IfcPositiveLengthMeasure;Thickness;IfcPositiveLengthMeasure;ThermalConductivity;IfcThermalConductivityMeasure;Length;IfcPositiveLengthMeasure;Height;IfcPositiveLengthMeasure;Diameter;IfcPositiveLengthMeasure;FinCorrugatedType;IfcLabel;HasCoating;IfcBoolean +Pset_UnitaryControlElementTypeCommon;Reference;IfcIdentifier;Mode;IfcLabel +Pset_UnitaryControlElementTypeThermostat;TemperatureSetPoint;IfcThermodynamicTemperatureMeasure +Pset_UnitaryEquipmentTypeAirConditioningUnit;SensibleCoolingCapacity;IfcPowerMeasure;LatentCoolingCapacity;IfcPowerMeasure;CoolingEfficiency;IfcPositiveRatioMeasure;HeatingCapacity;IfcPowerMeasure;HeatingEfficiency;IfcPositiveRatioMeasure;CondenserFlowrate;IfcVolumetricFlowRateMeasure;CondenserEnteringTemperature;IfcThermodynamicTemperatureMeasure;CondenserLeavingTemperature;IfcThermodynamicTemperatureMeasure;OutsideAirFlowrate;IfcVolumetricFlowRateMeasure +Pset_UnitaryEquipmentTypeAirHandler;DualDeck;IfcBoolean +Pset_UnitaryEquipmentTypeCommon;Reference;IfcIdentifier +Pset_ValveTypeAirRelease;IsAutomatic;IfcBoolean +Pset_ValveTypeCommon;Reference;IfcIdentifier;Size;IfcPositiveLengthMeasure;TestPressure;IfcPressureMeasure;WorkingPressure;IfcPressureMeasure;FlowCoefficient;IfcReal;CloseOffRating;IfcPressureMeasure +Pset_ValveTypeDrawOffCock;HasHoseUnion;IfcBoolean +Pset_ValveTypeFaucet;Finish;IfcText;FaucetTopDescription;IfcText +Pset_ValveTypeFlushing;FlushingRate;IfcVolumetricFlowRateMeasure;HasIntegralShutOffDevice;IfcBoolean;IsHighPressure;IfcBoolean +Pset_ValveTypeGasTap;HasHoseUnion;IfcBoolean +Pset_ValveTypeIsolating;IsNormallyOpen;IfcBoolean +Pset_ValveTypeMixing;OutletConnectionSize;IfcPositiveLengthMeasure +Pset_ValveTypePressureReducing;UpstreamPressure;IfcPressureMeasure;DownstreamPressure;IfcPressureMeasure +Pset_ValveTypePressureRelief;ReliefPressure;IfcPressureMeasure +Pset_VibrationIsolatorTypeCommon;Reference;IfcIdentifier;VibrationTransmissibility;IfcPositiveRatioMeasure;IsolatorStaticDeflection;IfcLengthMeasure;IsolatorCompressibility;IfcRatioMeasure;MaximumSupportedWeight;IfcMassMeasure;NominalHeight;IfcPositiveLengthMeasure +Pset_WallCommon;Reference;IfcIdentifier;AcousticRating;IfcLabel;FireRating;IfcLabel;Combustible;IfcBoolean;SurfaceSpreadOfFlame;IfcLabel;ThermalTransmittance;IfcThermalTransmittanceMeasure;IsExternal;IfcBoolean;LoadBearing;IfcBoolean;ExtendToStructure;IfcBoolean;Compartmentation;IfcBoolean +Pset_Warranty;WarrantyIdentifier;IfcIdentifier;WarrantyStartDate;IfcDate;WarrantyEndDate;IfcDate;IsExtendedWarranty;IfcBoolean;WarrantyPeriod;IfcDuration;WarrantyContent;IfcText;PointOfContact;IfcLabel;Exclusions;IfcText +Pset_WasteTerminalTypeCommon;Reference;IfcIdentifier +Pset_WasteTerminalTypeFloorTrap;NominalBodyLength;IfcPositiveLengthMeasure;NominalBodyWidth;IfcPositiveLengthMeasure;NominalBodyDepth;IfcPositiveLengthMeasure;IsForSullageWater;IfcBoolean;SpilloverLevel;IfcPositiveLengthMeasure;HasStrainer;IfcBoolean;OutletConnectionSize;IfcPositiveLengthMeasure;InletConnectionSize;IfcPositiveLengthMeasure;CoverLength;IfcPositiveLengthMeasure;CoverWidth;IfcPositiveLengthMeasure +Pset_WasteTerminalTypeFloorWaste;NominalBodyLength;IfcPositiveLengthMeasure;NominalBodyWidth;IfcPositiveLengthMeasure;NominalBodyDepth;IfcPositiveLengthMeasure;OutletConnectionSize;IfcPositiveLengthMeasure;CoverLength;IfcPositiveLengthMeasure;CoverWidth;IfcPositiveLengthMeasure +Pset_WasteTerminalTypeGullySump;NominalSumpLength;IfcPositiveLengthMeasure;NominalSumpWidth;IfcPositiveLengthMeasure;NominalSumpDepth;IfcPositiveLengthMeasure;OutletConnectionSize;IfcPositiveLengthMeasure;InletConnectionSize;IfcPositiveLengthMeasure;CoverLength;IfcPositiveLengthMeasure;CoverWidth;IfcPositiveLengthMeasure +Pset_WasteTerminalTypeGullyTrap;NominalBodyLength;IfcPositiveLengthMeasure;NominalBodyWidth;IfcPositiveLengthMeasure;NominalBodyDepth;IfcPositiveLengthMeasure;HasStrainer;IfcBoolean;OutletConnectionSize;IfcPositiveLengthMeasure;InletConnectionSize;IfcPositiveLengthMeasure;CoverLength;IfcPositiveLengthMeasure;CoverWidth;IfcPositiveLengthMeasure +Pset_WasteTerminalTypeRoofDrain;NominalBodyLength;IfcPositiveLengthMeasure;NominalBodyWidth;IfcPositiveLengthMeasure;NominalBodyDepth;IfcPositiveLengthMeasure;OutletConnectionSize;IfcPositiveLengthMeasure;CoverLength;IfcPositiveLengthMeasure;CoverWidth;IfcPositiveLengthMeasure +Pset_WasteTerminalTypeWasteDisposalUnit;DrainConnectionSize;IfcPositiveLengthMeasure;OutletConnectionSize;IfcPositiveLengthMeasure;NominalDepth;IfcPositiveLengthMeasure +Pset_WasteTerminalTypeWasteTrap;OutletConnectionSize;IfcPositiveLengthMeasure;InletConnectionSize;IfcPositiveLengthMeasure +Pset_WindowCommon;Reference;IfcIdentifier;AcousticRating;IfcLabel;FireRating;IfcLabel;SecurityRating;IfcLabel;IsExternal;IfcBoolean;Infiltration;IfcVolumetricFlowRateMeasure;ThermalTransmittance;IfcThermalTransmittanceMeasure;GlazingAreaFraction;IfcPositiveRatioMeasure;HasSillExternal;IfcBoolean;HasSillInternal;IfcBoolean;HasDrive;IfcBoolean;SmokeStop;IfcBoolean;FireExit;IfcBoolean;WaterTightnessRating;IfcLabel;MechanicalLoadRating;IfcLabel;WindLoadRating;IfcLabel +Pset_WorkControlCommon;WorkStartTime;IfcTime;WorkFinishTime;IfcTime;WorkDayDuration;IfcDuration;WorkWeekDuration;IfcDuration;WorkMonthDuration;IfcDuration +Pset_ZoneCommon;Reference;IfcIdentifier;IsExternal;IfcBoolean;GrossPlannedArea;IfcAreaMeasure;NetPlannedArea;IfcAreaMeasure;PubliclyAccessible;IfcBoolean;HandicapAccessible;IfcBoolean diff --git a/src/Mod/Arch/Resources/Arch.qrc b/src/Mod/Arch/Resources/Arch.qrc index bd79c2736b..34eacde520 100644 --- a/src/Mod/Arch/Resources/Arch.qrc +++ b/src/Mod/Arch/Resources/Arch.qrc @@ -1,152 +1,152 @@ - - - icons/Arch_Building.svg - icons/Arch_Floor.svg - icons/Arch_Cell.svg - icons/Arch_Wall.svg - icons/Arch_Site.svg - icons/Arch_Project.svg - icons/Arch_Structure.svg - icons/Arch_Add.svg - icons/Arch_Remove.svg - icons/Arch_MeshToShape.svg - icons/Arch_SplitMesh.svg - icons/preferences-arch.svg - icons/Arch_RemoveShape.svg - icons/Arch_SectionPlane.svg - icons/Arch_Window.svg - icons/Arch_Wall_Tree.svg - icons/Arch_Wall_Clone.svg - icons/Arch_Cell_Tree.svg - icons/Arch_Building_Tree.svg - icons/Arch_Floor_Tree.svg - icons/Arch_SectionPlane_Tree.svg - icons/Arch_Site_Tree.svg - icons/Arch_Project_Tree.svg - icons/Arch_Structure_Tree.svg - icons/Arch_Structure_Clone.svg - icons/Arch_Window_Tree.svg - icons/Arch_Window_Clone.svg - icons/Arch_Axis.svg - icons/Arch_Axis_Tree.svg - icons/Arch_Axis_System.svg - icons/Arch_Axis_System_Tree.svg - icons/Arch_Roof.svg - icons/Arch_Roof_Tree.svg - icons/Arch_CloseHoles.svg - icons/Arch_Check.svg - icons/Arch_SelectNonManifold.svg - icons/Arch_MergeWalls.svg - icons/Arch_Wall_Tree_Assembly.svg - icons/Arch_Fixture.svg - icons/Arch_Space.svg - icons/Arch_Space_Tree.svg - icons/Arch_Space_Clone.svg - icons/Arch_Stairs.svg - icons/Arch_Stairs_Tree.svg - icons/Arch_Rebar.svg - icons/Arch_Rebar_Tree.svg - icons/Arch_Frame.svg - icons/Arch_Frame_Tree.svg - icons/Arch_Panel.svg - icons/Arch_Panel_Tree.svg - icons/Arch_Panel_Clone.svg - icons/Arch_Panel_Cut.svg - icons/Arch_Panel_Sheet.svg - icons/Arch_Equipment.svg - icons/Arch_Equipment_Tree.svg - icons/Arch_Equipment_Clone.svg - icons/Arch_Survey.svg - icons/Arch_3Views.svg - icons/IFC.svg - icons/Arch_StructuralSystem.svg - icons/Arch_StructuralSystem_Tree.svg - icons/Arch_ToggleIfcBrepFlag.svg - icons/Arch_CutPlane.svg - icons/Arch_Bimserver.svg - icons/Git.svg - icons/Arch_Component.svg - icons/Arch_Component_Clone.svg - icons/Arch_Subcomponent.svg - icons/Arch_Material.svg - icons/Arch_Material_Group.svg - icons/Arch_Material_Multi.svg - icons/Arch_Schedule.svg - icons/ArchWorkbench.svg - icons/Arch_Fence.svg - icons/Arch_Fence_Tree.svg - ui/preferences-arch.ui - ui/preferences-archdefaults.ui - ui/preferences-ifc.ui - ui/preferences-dae.ui - ui/ArchMaterial.ui - ui/ArchMultiMaterial.ui - ui/ArchSchedule.ui - icons/Arch_Pipe.svg - icons/Arch_Pipe_Tree.svg - icons/Arch_PipeConnector.svg - icons/Arch_ToggleSubs.svg - icons/Arch_Nest.svg - icons/Arch_Grid.svg - icons/Arch_BuildingPart.svg - icons/Arch_BuildingPart_Tree.svg - icons/Arch_Profile.svg - icons/Arch_Reference.svg - ui/ParametersWindowDouble.svg - ui/ParametersWindowSimple.svg - ui/ParametersWindowFixed.svg - ui/ParametersWindowStash.svg - ui/ParametersDoorSimple.svg - ui/ParametersDoorGlass.svg - ui/ParametersBeam.svg - ui/ParametersPillar.svg - ui/ParametersDent.svg - ui/ParametersPanel.svg - ui/ParametersSlab.svg - ui/ParametersIbeam.svg - ui/ParametersStairs.svg - ui/BimServerTaskPanel.ui - ui/GitTaskPanel.ui - ui/DialogBimServerLogin.ui - ui/DialogDisplayText.ui - ui/ArchNest.ui - ui/DialogIfcProperties.ui - translations/Arch_af.qm - translations/Arch_de.qm - translations/Arch_fi.qm - translations/Arch_fr.qm - translations/Arch_it.qm - translations/Arch_nl.qm - translations/Arch_no.qm - translations/Arch_ru.qm - translations/Arch_uk.qm - translations/Arch_pl.qm - translations/Arch_hr.qm - translations/Arch_ja.qm - translations/Arch_hu.qm - translations/Arch_tr.qm - translations/Arch_sv-SE.qm - translations/Arch_zh-TW.qm - translations/Arch_pt-BR.qm - translations/Arch_cs.qm - translations/Arch_sk.qm - translations/Arch_es-ES.qm - translations/Arch_zh-CN.qm - translations/Arch_ro.qm - translations/Arch_pt-PT.qm - translations/Arch_sr.qm - translations/Arch_el.qm - translations/Arch_sl.qm - translations/Arch_eu.qm - translations/Arch_ca.qm - translations/Arch_gl.qm - translations/Arch_kab.qm - translations/Arch_ko.qm - translations/Arch_fil.qm - translations/Arch_id.qm - translations/Arch_lt.qm - translations/Arch_val-ES.qm - translations/Arch_ar.qm - translations/Arch_vi.qm - - + + + icons/Arch_Building.svg + icons/Arch_Floor.svg + icons/Arch_Cell.svg + icons/Arch_Wall.svg + icons/Arch_Site.svg + icons/Arch_Project.svg + icons/Arch_Structure.svg + icons/Arch_Add.svg + icons/Arch_Remove.svg + icons/Arch_MeshToShape.svg + icons/Arch_SplitMesh.svg + icons/preferences-arch.svg + icons/Arch_RemoveShape.svg + icons/Arch_SectionPlane.svg + icons/Arch_Window.svg + icons/Arch_Wall_Tree.svg + icons/Arch_Wall_Clone.svg + icons/Arch_Cell_Tree.svg + icons/Arch_Building_Tree.svg + icons/Arch_Floor_Tree.svg + icons/Arch_SectionPlane_Tree.svg + icons/Arch_Site_Tree.svg + icons/Arch_Project_Tree.svg + icons/Arch_Structure_Tree.svg + icons/Arch_Structure_Clone.svg + icons/Arch_Window_Tree.svg + icons/Arch_Window_Clone.svg + icons/Arch_Axis.svg + icons/Arch_Axis_Tree.svg + icons/Arch_Axis_System.svg + icons/Arch_Axis_System_Tree.svg + icons/Arch_Roof.svg + icons/Arch_Roof_Tree.svg + icons/Arch_CloseHoles.svg + icons/Arch_Check.svg + icons/Arch_SelectNonManifold.svg + icons/Arch_MergeWalls.svg + icons/Arch_Wall_Tree_Assembly.svg + icons/Arch_Fixture.svg + icons/Arch_Space.svg + icons/Arch_Space_Tree.svg + icons/Arch_Space_Clone.svg + icons/Arch_Stairs.svg + icons/Arch_Stairs_Tree.svg + icons/Arch_Rebar.svg + icons/Arch_Rebar_Tree.svg + icons/Arch_Frame.svg + icons/Arch_Frame_Tree.svg + icons/Arch_Panel.svg + icons/Arch_Panel_Tree.svg + icons/Arch_Panel_Clone.svg + icons/Arch_Panel_Cut.svg + icons/Arch_Panel_Sheet.svg + icons/Arch_Equipment.svg + icons/Arch_Equipment_Tree.svg + icons/Arch_Equipment_Clone.svg + icons/Arch_Survey.svg + icons/Arch_3Views.svg + icons/IFC.svg + icons/Arch_StructuralSystem.svg + icons/Arch_StructuralSystem_Tree.svg + icons/Arch_ToggleIfcBrepFlag.svg + icons/Arch_CutPlane.svg + icons/Arch_Bimserver.svg + icons/Git.svg + icons/Arch_Component.svg + icons/Arch_Component_Clone.svg + icons/Arch_Subcomponent.svg + icons/Arch_Material.svg + icons/Arch_Material_Group.svg + icons/Arch_Material_Multi.svg + icons/Arch_Schedule.svg + icons/ArchWorkbench.svg + icons/Arch_Fence.svg + icons/Arch_Fence_Tree.svg + ui/preferences-arch.ui + ui/preferences-archdefaults.ui + ui/preferences-ifc.ui + ui/preferences-dae.ui + ui/ArchMaterial.ui + ui/ArchMultiMaterial.ui + ui/ArchSchedule.ui + icons/Arch_Pipe.svg + icons/Arch_Pipe_Tree.svg + icons/Arch_PipeConnector.svg + icons/Arch_ToggleSubs.svg + icons/Arch_Nest.svg + icons/Arch_Grid.svg + icons/Arch_BuildingPart.svg + icons/Arch_BuildingPart_Tree.svg + icons/Arch_Profile.svg + icons/Arch_Reference.svg + ui/ParametersWindowDouble.svg + ui/ParametersWindowSimple.svg + ui/ParametersWindowFixed.svg + ui/ParametersWindowStash.svg + ui/ParametersDoorSimple.svg + ui/ParametersDoorGlass.svg + ui/ParametersBeam.svg + ui/ParametersPillar.svg + ui/ParametersDent.svg + ui/ParametersPanel.svg + ui/ParametersSlab.svg + ui/ParametersIbeam.svg + ui/ParametersStairs.svg + ui/BimServerTaskPanel.ui + ui/GitTaskPanel.ui + ui/DialogBimServerLogin.ui + ui/DialogDisplayText.ui + ui/ArchNest.ui + ui/DialogIfcProperties.ui + translations/Arch_af.qm + translations/Arch_de.qm + translations/Arch_fi.qm + translations/Arch_fr.qm + translations/Arch_it.qm + translations/Arch_nl.qm + translations/Arch_no.qm + translations/Arch_ru.qm + translations/Arch_uk.qm + translations/Arch_pl.qm + translations/Arch_hr.qm + translations/Arch_ja.qm + translations/Arch_hu.qm + translations/Arch_tr.qm + translations/Arch_sv-SE.qm + translations/Arch_zh-TW.qm + translations/Arch_pt-BR.qm + translations/Arch_cs.qm + translations/Arch_sk.qm + translations/Arch_es-ES.qm + translations/Arch_zh-CN.qm + translations/Arch_ro.qm + translations/Arch_pt-PT.qm + translations/Arch_sr.qm + translations/Arch_el.qm + translations/Arch_sl.qm + translations/Arch_eu.qm + translations/Arch_ca.qm + translations/Arch_gl.qm + translations/Arch_kab.qm + translations/Arch_ko.qm + translations/Arch_fil.qm + translations/Arch_id.qm + translations/Arch_lt.qm + translations/Arch_val-ES.qm + translations/Arch_ar.qm + translations/Arch_vi.qm + + diff --git a/src/Mod/Arch/arch.dox b/src/Mod/Arch/arch.dox index d12c3f46e5..9d5a537fe9 100644 --- a/src/Mod/Arch/arch.dox +++ b/src/Mod/Arch/arch.dox @@ -1,3 +1,3 @@ -/** \defgroup ARCH Arch - * \ingroup PYTHONWORKBENCHES */ - +/** \defgroup ARCH Arch + * \ingroup PYTHONWORKBENCHES */ + diff --git a/src/Mod/Arch/exportIFC.py b/src/Mod/Arch/exportIFC.py index 0ba8256c3d..3f19602df9 100644 --- a/src/Mod/Arch/exportIFC.py +++ b/src/Mod/Arch/exportIFC.py @@ -972,7 +972,8 @@ def export(exportList,filename,colors=None,preferences=None): if not(Draft.getType(FreeCAD.ActiveDocument.getObject(k)) in ["Site","Building","Floor","BuildingPart"]): untreated.append(v) elif Draft.getType(FreeCAD.ActiveDocument.getObject(k)) == "BuildingPart": - if not(FreeCAD.ActiveDocument.getObject(k).IfcType in ["Building","Building Storey","Site","Space","Undefined"]): + if not(FreeCAD.ActiveDocument.getObject(k).IfcType in ["Building","Building Storey","Site","Space"]): + # if ifc type is "Undefined" the object is added to untreated untreated.append(v) if untreated: if not defaulthost: diff --git a/src/Mod/Arch/importGBXML.py b/src/Mod/Arch/importGBXML.py index 573921077e..ae4f3afb50 100644 --- a/src/Mod/Arch/importGBXML.py +++ b/src/Mod/Arch/importGBXML.py @@ -1,502 +1,502 @@ -#*************************************************************************** -#* * -#* Copyright (c) 2015 * -#* Yorik van Havre * -#* * -#* This program is free software; you can redistribute it and/or modify * -#* it under the terms of the GNU Lesser General Public License (LGPL) * -#* as published by the Free Software Foundation; either version 2 of * -#* the License, or (at your option) any later version. * -#* for detail see the LICENCE text file. * -#* * -#* This program 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 Library General Public License for more details. * -#* * -#* You should have received a copy of the GNU Library General Public * -#* License along with this program; if not, write to the Free Software * -#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * -#* USA * -#* * -#*************************************************************************** - -__title__= "FreeCAD GbXml exporter" -__author__ = "Yorik van Havre" -__url__ = "http://www.freecadweb.org" - -import os,FreeCAD,Draft - -if FreeCAD.GuiUp: - from DraftTools import translate -else: - # \cond - def translate(ctx,txt): - return txt - # \endcond - -## @package importGBXML -# \ingroup ARCH -# \brief GBXML file format exporter -# -# This module provides tools to export GBXML files. - -def export(objectslist,filename): - - if len(objectslist) != 1: - FreeCAD.Console.PrintError(translate("Arch","This exporter can currently only export one site object")+"\n") - return - site = objectslist[0] - if Draft.getType(site) != "Site": - FreeCAD.Console.PrintError(translate("Arch","This exporter can currently only export one site object")+"\n") - return - - filestream = pyopen(filename,"wb") - - # header - filestream.write( '\n' ) - filestream.write( '\n' % FreeCAD.Version()[0]+FreeCAD.Version()[1]+FreeCAD.Version()[2] ) - filestream.write( '\n' ) - filestream.write( '\n' ) - - # campus - filestream.write( '\n' % site.Name ) - filestream.write( '\n' ) - filestream.write( ' %s\n' % site.PostalCode ) - filestream.write( ' %f\n' % site.Longitude ) - filestream.write( ' %f\n' % site.Latitude ) - filestream.write( ' %f/Elevation>\n' % site.Elevation.Value ) - filestream.write( ' %s\n' % site.Label ) - #filestream.write( ' 0\n' ) - #filestream.write( ' 53158_2004\n' ) - filestream.write( '\n' ) - - # buildings - for building in site.Group: - if Draft.getType(building) == "Building": - filestream.write( ' \n' % (building.Name,building.BuildingType) ) - filestream.write( ' $f\n' % str(building.Area.getValueAs("m^2")) ) - - # spaces - for space in Draft.getObjectsOfType(Draft.getGroupContents(building.Group,addgroups=True),"Space"): - if not space.Zone: - FreeCAD.Console.PrintError(translate("Arch","Error: Space '%s' has no Zone. Aborting.") % space.Label + "\n") - return - filestream.write( ' \n' % (space.Name, space.SpaceType, space.Zone.Name, space.Conditioning) ) - #filestream.write( ' %s\n' % space.Name ) # not sure what this is used for? - filestream.write( ' %s\n' % space.Label ) - filestream.write( ' %s\n' % space.Description ) - filestream.write( ' %i\n' % space.NumberOfPeople) - filestream.write( ' %f\n' % space.LightingPower/space.Area.getValueAs("m^2") ) - filestream.write( ' %f\n' % space.EquipmentPower/space.Area.getValueAs("m^2") ) - filestream.write( ' $f\n' % space.Area.getValueAs("m^2") ) - filestream.write( ' $f\n' % FreeCAD.Units.Quantity(space.Shape.Volume,FreeCAD.Units.Volume).getValueAs("m^3") ) - filestream.write( ' \n' % space.Name ) - - # shells - for solid in space.Shape.Solids: - filestream.write( ' \n' ) - for face in solid.Faces: - filestream.write( ' \n' ) - for v in face.OuterWire.Vertexes: - filestream.write( ' \n' ) - filestream.write( ' %f\n' % v.Point.x ) - filestream.write( ' %f\n' % v.Point.y ) - filestream.write( ' %f\n' % v.Point.z ) - filestream.write( ' \n' ) - filestream.write( ' \n' ) - filestream.write( ' \n' ) - filestream.write( ' \n' ) - filestream.write( ' \n' ) - - # surfaces - for i,face in enumerate(space.Shape.Faces): - filestream.write( ' \n' ) - filestream.write( ' \n' ) - for v in face.OuterWire.Vertexes: - filestream.write( ' \n' ) - filestream.write( ' %f\n' % v.Point.x ) - filestream.write( ' %f\n' % v.Point.y ) - filestream.write( ' %f\n' % v.Point.z ) - filestream.write( ' \n' ) - filestream.write( ' \n' ) - filestream.write( ' \n' ) - filestream.write( ' \n' ) - - filestream.write( ' \n' ) - - filestream.write( ' \n' ) - - filestream.write( '\n' ) - - filestream.write( '' ) - -''' - 18000.00000 - - Lab corridor - - 1.00000 - 1.50000 - 0.00000 - 800.00000 - 6400.00000 - - - - - 0.00000 - 1200.00000 - 0.00000 - - - 0.00000 - 1200.00000 - 96.00000 - - - 480.00000 - 1200.00000 - 96.00000 - - - 480.00000 - 1200.00000 - 0.00000 - - - - ... repeat - - - - - - - - - 9.981497 - -31.19363 - 0 - - - 9.981497 - -5.193626 - 0 - - - 9.981497 - -5.193626 - 100 - - - 9.981497 - -31.19363 - 100 - - - - - - - - - 21E2 - - - ... repeat - - - - - - - Floor - - - 90.00 - - 0.00000 - 1320.00000 - 0.00000 - - 180.00 - 480.00000 - 240.00000 - - - - - 0.00000 - 1320.00000 - 0.00000 - - - 480.00000 - 1320.00000 - 0.00000 - - - 960.00000 - 1320.00000 - 0.00000 - - - 960.00000 - 1200.00000 - 0.00000 - - - 480.00000 - 1200.00000 - 0.00000 - - - 0.00000 - 1200.00000 - 0.00000 - - - - - - - - - Surface 4 - - - 180.00 - - 960.00000 - 0.00000 - 0.00000 - - 90.00 - 114.00000 - 480.00000 - - - - - 960.00000 - 0.00000 - 0.00000 - - - 1440.00000 - 0.00000 - 0.00000 - - - 1440.00000 - 0.00000 - 114.00000 - - - 960.00000 - 0.00000 - 114.00000 - - - - - Opening1 - - - 96.00000 - 24.00000 - - 72.00000 - 48.00000 - - - - - 1056.00000 - 0.00000 - 24.00000 - - - 1104.00000 - 0.00000 - 24.00000 - - - 1104.00000 - 0.00000 - 96.00000 - - - 1056.00000 - 0.00000 - 96.00000 - - - - - - Opening2 - - - 216.00000 - 24.00000 - - 72.00000 - 48.00000 - - - - - 1176.00000 - 0.00000 - 24.00000 - - - 1224.00000 - 0.00000 - 24.00000 - - - 1224.00000 - 0.00000 - 96.00000 - - - 1176.00000 - 0.00000 - 96.00000 - - - - - - Opening3 - - - 336.00000 - 24.00000 - - 72.00000 - 48.00000 - - - - - 1296.00000 - 0.00000 - 24.00000 - - - 1344.00000 - 0.00000 - 24.00000 - - - 1344.00000 - 0.00000 - 96.00000 - - - 1296.00000 - 0.00000 - 96.00000 - - - - - - - - ... repeat - - - - - - - Standard - - - - Standard - - - - Standard - - - - Standard - - - - - - - Lab and Corridor - - 0" - 0.00000 - 0.00000 - 2.37037 - 812.69841 - 72.00000 - 75.00000 - - - Office - - 1" - 0.13333 - 20.00000 - 0.05333 - 8.00000 - 72.00000 - 75.00000 - - - Warehouse - - 5/32" - 0.05000 - 25.71429 - 0.00000 - 0.00000 - 60.00000 - 80.00000 - - - - - Autodesk, Inc. - Autodesk Project Vasari CEA - TP2.0 20110514_1800 - Microsoft Windows XP - - - - - sp3_LabandCorridor_Lab1 - 5534.837890625 - Space Cooling Roof Cond - 21E3 - - -... repeat - -''' - - - - +#*************************************************************************** +#* * +#* Copyright (c) 2015 * +#* Yorik van Havre * +#* * +#* This program is free software; you can redistribute it and/or modify * +#* it under the terms of the GNU Lesser General Public License (LGPL) * +#* as published by the Free Software Foundation; either version 2 of * +#* the License, or (at your option) any later version. * +#* for detail see the LICENCE text file. * +#* * +#* This program 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 Library General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#*************************************************************************** + +__title__= "FreeCAD GbXml exporter" +__author__ = "Yorik van Havre" +__url__ = "http://www.freecadweb.org" + +import os,FreeCAD,Draft + +if FreeCAD.GuiUp: + from DraftTools import translate +else: + # \cond + def translate(ctx,txt): + return txt + # \endcond + +## @package importGBXML +# \ingroup ARCH +# \brief GBXML file format exporter +# +# This module provides tools to export GBXML files. + +def export(objectslist,filename): + + if len(objectslist) != 1: + FreeCAD.Console.PrintError(translate("Arch","This exporter can currently only export one site object")+"\n") + return + site = objectslist[0] + if Draft.getType(site) != "Site": + FreeCAD.Console.PrintError(translate("Arch","This exporter can currently only export one site object")+"\n") + return + + filestream = pyopen(filename,"wb") + + # header + filestream.write( '\n' ) + filestream.write( '\n' % FreeCAD.Version()[0]+FreeCAD.Version()[1]+FreeCAD.Version()[2] ) + filestream.write( '\n' ) + filestream.write( '\n' ) + + # campus + filestream.write( '\n' % site.Name ) + filestream.write( '\n' ) + filestream.write( ' %s\n' % site.PostalCode ) + filestream.write( ' %f\n' % site.Longitude ) + filestream.write( ' %f\n' % site.Latitude ) + filestream.write( ' %f/Elevation>\n' % site.Elevation.Value ) + filestream.write( ' %s\n' % site.Label ) + #filestream.write( ' 0\n' ) + #filestream.write( ' 53158_2004\n' ) + filestream.write( '\n' ) + + # buildings + for building in site.Group: + if Draft.getType(building) == "Building": + filestream.write( ' \n' % (building.Name,building.BuildingType) ) + filestream.write( ' $f\n' % str(building.Area.getValueAs("m^2")) ) + + # spaces + for space in Draft.getObjectsOfType(Draft.getGroupContents(building.Group,addgroups=True),"Space"): + if not space.Zone: + FreeCAD.Console.PrintError(translate("Arch","Error: Space '%s' has no Zone. Aborting.") % space.Label + "\n") + return + filestream.write( ' \n' % (space.Name, space.SpaceType, space.Zone.Name, space.Conditioning) ) + #filestream.write( ' %s\n' % space.Name ) # not sure what this is used for? + filestream.write( ' %s\n' % space.Label ) + filestream.write( ' %s\n' % space.Description ) + filestream.write( ' %i\n' % space.NumberOfPeople) + filestream.write( ' %f\n' % space.LightingPower/space.Area.getValueAs("m^2") ) + filestream.write( ' %f\n' % space.EquipmentPower/space.Area.getValueAs("m^2") ) + filestream.write( ' $f\n' % space.Area.getValueAs("m^2") ) + filestream.write( ' $f\n' % FreeCAD.Units.Quantity(space.Shape.Volume,FreeCAD.Units.Volume).getValueAs("m^3") ) + filestream.write( ' \n' % space.Name ) + + # shells + for solid in space.Shape.Solids: + filestream.write( ' \n' ) + for face in solid.Faces: + filestream.write( ' \n' ) + for v in face.OuterWire.Vertexes: + filestream.write( ' \n' ) + filestream.write( ' %f\n' % v.Point.x ) + filestream.write( ' %f\n' % v.Point.y ) + filestream.write( ' %f\n' % v.Point.z ) + filestream.write( ' \n' ) + filestream.write( ' \n' ) + filestream.write( ' \n' ) + filestream.write( ' \n' ) + filestream.write( ' \n' ) + + # surfaces + for i,face in enumerate(space.Shape.Faces): + filestream.write( ' \n' ) + filestream.write( ' \n' ) + for v in face.OuterWire.Vertexes: + filestream.write( ' \n' ) + filestream.write( ' %f\n' % v.Point.x ) + filestream.write( ' %f\n' % v.Point.y ) + filestream.write( ' %f\n' % v.Point.z ) + filestream.write( ' \n' ) + filestream.write( ' \n' ) + filestream.write( ' \n' ) + filestream.write( ' \n' ) + + filestream.write( ' \n' ) + + filestream.write( ' \n' ) + + filestream.write( '\n' ) + + filestream.write( '' ) + +''' + 18000.00000 + + Lab corridor + + 1.00000 + 1.50000 + 0.00000 + 800.00000 + 6400.00000 + + + + + 0.00000 + 1200.00000 + 0.00000 + + + 0.00000 + 1200.00000 + 96.00000 + + + 480.00000 + 1200.00000 + 96.00000 + + + 480.00000 + 1200.00000 + 0.00000 + + + + ... repeat + + + + + + + + + 9.981497 + -31.19363 + 0 + + + 9.981497 + -5.193626 + 0 + + + 9.981497 + -5.193626 + 100 + + + 9.981497 + -31.19363 + 100 + + + + + + + + + 21E2 + + + ... repeat + + + + + + + Floor + + + 90.00 + + 0.00000 + 1320.00000 + 0.00000 + + 180.00 + 480.00000 + 240.00000 + + + + + 0.00000 + 1320.00000 + 0.00000 + + + 480.00000 + 1320.00000 + 0.00000 + + + 960.00000 + 1320.00000 + 0.00000 + + + 960.00000 + 1200.00000 + 0.00000 + + + 480.00000 + 1200.00000 + 0.00000 + + + 0.00000 + 1200.00000 + 0.00000 + + + + + + + + + Surface 4 + + + 180.00 + + 960.00000 + 0.00000 + 0.00000 + + 90.00 + 114.00000 + 480.00000 + + + + + 960.00000 + 0.00000 + 0.00000 + + + 1440.00000 + 0.00000 + 0.00000 + + + 1440.00000 + 0.00000 + 114.00000 + + + 960.00000 + 0.00000 + 114.00000 + + + + + Opening1 + + + 96.00000 + 24.00000 + + 72.00000 + 48.00000 + + + + + 1056.00000 + 0.00000 + 24.00000 + + + 1104.00000 + 0.00000 + 24.00000 + + + 1104.00000 + 0.00000 + 96.00000 + + + 1056.00000 + 0.00000 + 96.00000 + + + + + + Opening2 + + + 216.00000 + 24.00000 + + 72.00000 + 48.00000 + + + + + 1176.00000 + 0.00000 + 24.00000 + + + 1224.00000 + 0.00000 + 24.00000 + + + 1224.00000 + 0.00000 + 96.00000 + + + 1176.00000 + 0.00000 + 96.00000 + + + + + + Opening3 + + + 336.00000 + 24.00000 + + 72.00000 + 48.00000 + + + + + 1296.00000 + 0.00000 + 24.00000 + + + 1344.00000 + 0.00000 + 24.00000 + + + 1344.00000 + 0.00000 + 96.00000 + + + 1296.00000 + 0.00000 + 96.00000 + + + + + + + + ... repeat + + + + + + + Standard + + + + Standard + + + + Standard + + + + Standard + + + + + + + Lab and Corridor + + 0" + 0.00000 + 0.00000 + 2.37037 + 812.69841 + 72.00000 + 75.00000 + + + Office + + 1" + 0.13333 + 20.00000 + 0.05333 + 8.00000 + 72.00000 + 75.00000 + + + Warehouse + + 5/32" + 0.05000 + 25.71429 + 0.00000 + 0.00000 + 60.00000 + 80.00000 + + + + + Autodesk, Inc. + Autodesk Project Vasari CEA + TP2.0 20110514_1800 + Microsoft Windows XP + + + + + sp3_LabandCorridor_Lab1 + 5534.837890625 + Space Cooling Roof Cond + 21E3 + + +... repeat + +''' + + + + diff --git a/src/Mod/Complete/Init.py b/src/Mod/Complete/Init.py index f92d0dbf1c..420a8a45e4 100644 --- a/src/Mod/Complete/Init.py +++ b/src/Mod/Complete/Init.py @@ -1,27 +1,27 @@ -# FreeCAD init script of the Complete module -# (c) 2001 Juergen Riegel - -#*************************************************************************** -#* (c) Juergen Riegel (juergen.riegel@web.de) 2002 * -#* * -#* This file is part of the FreeCAD CAx development system. * -#* * -#* This program is free software; you can redistribute it and/or modify * -#* it under the terms of the GNU Lesser General Public License (LGPL) * -#* as published by the Free Software Foundation; either version 2 of * -#* the License, or (at your option) any later version. * -#* for detail see the LICENCE text file. * -#* * -#* FreeCAD 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 Lesser General Public License for more details. * -#* * -#* You should have received a copy of the GNU Library General Public * -#* License along with FreeCAD; if not, write to the Free Software * -#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * -#* USA * -#* * -#* Juergen Riegel 2002 * -#***************************************************************************/ - +# FreeCAD init script of the Complete module +# (c) 2001 Juergen Riegel + +#*************************************************************************** +#* (c) Juergen Riegel (juergen.riegel@web.de) 2002 * +#* * +#* This file is part of the FreeCAD CAx development system. * +#* * +#* This program is free software; you can redistribute it and/or modify * +#* it under the terms of the GNU Lesser General Public License (LGPL) * +#* as published by the Free Software Foundation; either version 2 of * +#* the License, or (at your option) any later version. * +#* for detail see the LICENCE text file. * +#* * +#* FreeCAD 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 Lesser General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with FreeCAD; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#* Juergen Riegel 2002 * +#***************************************************************************/ + diff --git a/src/Mod/Complete/InitGui.py b/src/Mod/Complete/InitGui.py index 276f28a6a8..eb41dba92e 100644 --- a/src/Mod/Complete/InitGui.py +++ b/src/Mod/Complete/InitGui.py @@ -1,46 +1,46 @@ -# Complete gui init module -# (c) 2003 Juergen Riegel -# -# Gathering all the information to start FreeCAD -# This is the second one of three init scripts, the third one -# runs when the gui is up - -#*************************************************************************** -#* (c) Juergen Riegel (juergen.riegel@web.de) 2002 * -#* * -#* This file is part of the FreeCAD CAx development system. * -#* * -#* This program is free software; you can redistribute it and/or modify * -#* it under the terms of the GNU Lesser General Public License (LGPL) * -#* as published by the Free Software Foundation; either version 2 of * -#* the License, or (at your option) any later version. * -#* for detail see the LICENCE text file. * -#* * -#* FreeCAD 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 Lesser General Public License for more details. * -#* * -#* You should have received a copy of the GNU Library General Public * -#* License along with FreeCAD; if not, write to the Free Software * -#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * -#* USA * -#* * -#* Juergen Riegel 2002 * -#***************************************************************************/ - - -class CompleteWorkbench(Workbench): - "Complete workbench object" - def __init__(self): - self.__class__.Icon = FreeCAD.getResourceDir() + "Mod/Complete/Resources/icons/CompleteWorkbench.svg" - self.__class__.MenuText = "Complete" - self.__class__.ToolTip = "Complete workbench" - - def Initialize(self): - pass - - def GetClassName(self): - return "Gui::PythonWorkbench" - -Gui.addWorkbench(CompleteWorkbench()) +# Complete gui init module +# (c) 2003 Juergen Riegel +# +# Gathering all the information to start FreeCAD +# This is the second one of three init scripts, the third one +# runs when the gui is up + +#*************************************************************************** +#* (c) Juergen Riegel (juergen.riegel@web.de) 2002 * +#* * +#* This file is part of the FreeCAD CAx development system. * +#* * +#* This program is free software; you can redistribute it and/or modify * +#* it under the terms of the GNU Lesser General Public License (LGPL) * +#* as published by the Free Software Foundation; either version 2 of * +#* the License, or (at your option) any later version. * +#* for detail see the LICENCE text file. * +#* * +#* FreeCAD 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 Lesser General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with FreeCAD; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#* Juergen Riegel 2002 * +#***************************************************************************/ + + +class CompleteWorkbench(Workbench): + "Complete workbench object" + def __init__(self): + self.__class__.Icon = FreeCAD.getResourceDir() + "Mod/Complete/Resources/icons/CompleteWorkbench.svg" + self.__class__.MenuText = "Complete" + self.__class__.ToolTip = "Complete workbench" + + def Initialize(self): + pass + + def GetClassName(self): + return "Gui::PythonWorkbench" + +Gui.addWorkbench(CompleteWorkbench()) diff --git a/src/Mod/Draft/App/AppDraftUtils.cpp b/src/Mod/Draft/App/AppDraftUtils.cpp index 252fdfda6b..6d365a4559 100644 --- a/src/Mod/Draft/App/AppDraftUtils.cpp +++ b/src/Mod/Draft/App/AppDraftUtils.cpp @@ -1,51 +1,51 @@ -/*************************************************************************** - * Copyright (c) Yorik van Havre (yorik@uncreated.net) 2015 * - * * - * This file is part of the FreeCAD CAx development system. * - * * - * This library is free software; you can redistribute it and/or * - * modify it under the terms of the GNU Library General Public * - * License as published by the Free Software Foundation; either * - * version 2 of the License, or (at your option) any later version. * - * * - * This library 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 Library General Public License for more details. * - * * - * You should have received a copy of the GNU Library General Public * - * License along with this library; see the file COPYING.LIB. If not, * - * write to the Free Software Foundation, Inc., 59 Temple Place, * - * Suite 330, Boston, MA 02111-1307, USA * - * * - ***************************************************************************/ - - -#include "PreCompiled.h" -#ifndef _PreComp_ -# include -#endif - -#include -#include -#include - -namespace DraftUtils { -extern PyObject* initModule(); -} - -/* Python entry */ -PyMOD_INIT_FUNC(DraftUtils) -{ - // load dependent module - try { - Base::Interpreter().loadModule("Part"); - } - catch(const Base::Exception& e) { - PyErr_SetString(PyExc_ImportError, e.what()); - PyMOD_Return(0); - } - PyObject* mod = DraftUtils::initModule(); - Base::Console().Log("Loading DraftUtils module... done\n"); - PyMOD_Return(mod); -} +/*************************************************************************** + * Copyright (c) Yorik van Havre (yorik@uncreated.net) 2015 * + * * + * This file is part of the FreeCAD CAx development system. * + * * + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Library General Public * + * License as published by the Free Software Foundation; either * + * version 2 of the License, or (at your option) any later version. * + * * + * This library 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 Library General Public License for more details. * + * * + * You should have received a copy of the GNU Library General Public * + * License along with this library; see the file COPYING.LIB. If not, * + * write to the Free Software Foundation, Inc., 59 Temple Place, * + * Suite 330, Boston, MA 02111-1307, USA * + * * + ***************************************************************************/ + + +#include "PreCompiled.h" +#ifndef _PreComp_ +# include +#endif + +#include +#include +#include + +namespace DraftUtils { +extern PyObject* initModule(); +} + +/* Python entry */ +PyMOD_INIT_FUNC(DraftUtils) +{ + // load dependent module + try { + Base::Interpreter().loadModule("Part"); + } + catch(const Base::Exception& e) { + PyErr_SetString(PyExc_ImportError, e.what()); + PyMOD_Return(0); + } + PyObject* mod = DraftUtils::initModule(); + Base::Console().Log("Loading DraftUtils module... done\n"); + PyMOD_Return(mod); +} diff --git a/src/Mod/Draft/App/AppDraftUtilsPy.cpp b/src/Mod/Draft/App/AppDraftUtilsPy.cpp index f8bcefb29c..64d655f119 100644 --- a/src/Mod/Draft/App/AppDraftUtilsPy.cpp +++ b/src/Mod/Draft/App/AppDraftUtilsPy.cpp @@ -1,100 +1,100 @@ -/*************************************************************************** - * Copyright (c) Yorik van Havre (yorik@uncreated.net) 2015 * - * * - * This file is part of the FreeCAD CAx development system. * - * * - * This library is free software; you can redistribute it and/or * - * modify it under the terms of the GNU Library General Public * - * License as published by the Free Software Foundation; either * - * version 2 of the License, or (at your option) any later version. * - * * - * This library 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 Library General Public License for more details. * - * * - * You should have received a copy of the GNU Library General Public * - * License along with this library; see the file COPYING.LIB. If not, * - * write to the Free Software Foundation, Inc., 59 Temple Place, * - * Suite 330, Boston, MA 02111-1307, USA * - * * - ***************************************************************************/ - - -#include "PreCompiled.h" -#ifndef _PreComp_ -# include -#endif - -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include "DraftDxf.h" - -namespace DraftUtils { -class Module : public Py::ExtensionModule -{ -public: - Module() : Py::ExtensionModule("DraftUtils") - { - add_varargs_method("readDXF",&Module::readDXF, - "readDXF(filename,[document,ignore_errors]): Imports a DXF file into the given document. ignore_errors is True by default." - ); - initialize("The DraftUtils module contains utility functions for the Draft module."); // register with Python - } - - virtual ~Module() {} - -private: - Py::Object readDXF(const Py::Tuple& args) - { - Base::Console().Warning("DraftUtils.readDXF is deprecated. Use Import.readDxf instead.\n"); - char* Name; - const char* DocName=0; - bool IgnoreErrors=true; - if (!PyArg_ParseTuple(args.ptr(), "et|sb","utf-8",&Name,&DocName,&IgnoreErrors)) - throw Py::Exception(); - - std::string EncodedName = std::string(Name); - PyMem_Free(Name); - - Base::FileInfo file(EncodedName.c_str()); - if (!file.exists()) - throw Py::RuntimeError("File doesn't exist"); - - App::Document *pcDoc; - if (DocName) - pcDoc = App::GetApplication().getDocument(DocName); - else - pcDoc = App::GetApplication().getActiveDocument(); - if (!pcDoc) - pcDoc = App::GetApplication().newDocument(DocName); - - try { - // read the DXF file - DraftDxfRead dxf_file(EncodedName,pcDoc); - dxf_file.DoRead(IgnoreErrors); - pcDoc->recompute(); - } - catch (const Base::Exception& e) { - throw Py::RuntimeError(e.what()); - } - - return Py::None(); - } -}; - -PyObject* initModule() -{ - return (new Module)->module().ptr(); -} - -} // namespace DraftUtils +/*************************************************************************** + * Copyright (c) Yorik van Havre (yorik@uncreated.net) 2015 * + * * + * This file is part of the FreeCAD CAx development system. * + * * + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Library General Public * + * License as published by the Free Software Foundation; either * + * version 2 of the License, or (at your option) any later version. * + * * + * This library 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 Library General Public License for more details. * + * * + * You should have received a copy of the GNU Library General Public * + * License along with this library; see the file COPYING.LIB. If not, * + * write to the Free Software Foundation, Inc., 59 Temple Place, * + * Suite 330, Boston, MA 02111-1307, USA * + * * + ***************************************************************************/ + + +#include "PreCompiled.h" +#ifndef _PreComp_ +# include +#endif + +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include "DraftDxf.h" + +namespace DraftUtils { +class Module : public Py::ExtensionModule +{ +public: + Module() : Py::ExtensionModule("DraftUtils") + { + add_varargs_method("readDXF",&Module::readDXF, + "readDXF(filename,[document,ignore_errors]): Imports a DXF file into the given document. ignore_errors is True by default." + ); + initialize("The DraftUtils module contains utility functions for the Draft module."); // register with Python + } + + virtual ~Module() {} + +private: + Py::Object readDXF(const Py::Tuple& args) + { + Base::Console().Warning("DraftUtils.readDXF is deprecated. Use Import.readDxf instead.\n"); + char* Name; + const char* DocName=0; + bool IgnoreErrors=true; + if (!PyArg_ParseTuple(args.ptr(), "et|sb","utf-8",&Name,&DocName,&IgnoreErrors)) + throw Py::Exception(); + + std::string EncodedName = std::string(Name); + PyMem_Free(Name); + + Base::FileInfo file(EncodedName.c_str()); + if (!file.exists()) + throw Py::RuntimeError("File doesn't exist"); + + App::Document *pcDoc; + if (DocName) + pcDoc = App::GetApplication().getDocument(DocName); + else + pcDoc = App::GetApplication().getActiveDocument(); + if (!pcDoc) + pcDoc = App::GetApplication().newDocument(DocName); + + try { + // read the DXF file + DraftDxfRead dxf_file(EncodedName,pcDoc); + dxf_file.DoRead(IgnoreErrors); + pcDoc->recompute(); + } + catch (const Base::Exception& e) { + throw Py::RuntimeError(e.what()); + } + + return Py::None(); + } +}; + +PyObject* initModule() +{ + return (new Module)->module().ptr(); +} + +} // namespace DraftUtils diff --git a/src/Mod/Draft/App/DraftDxf.h b/src/Mod/Draft/App/DraftDxf.h index 3842c985e7..f450eb6699 100644 --- a/src/Mod/Draft/App/DraftDxf.h +++ b/src/Mod/Draft/App/DraftDxf.h @@ -26,7 +26,7 @@ #include "dxf.h" #include #include -#include +#include namespace DraftUtils { diff --git a/src/Mod/Draft/App/PreCompiled.cpp b/src/Mod/Draft/App/PreCompiled.cpp index 0e8374b910..d5cd2b171b 100644 --- a/src/Mod/Draft/App/PreCompiled.cpp +++ b/src/Mod/Draft/App/PreCompiled.cpp @@ -1,24 +1,24 @@ -/*************************************************************************** - * Copyright (c) Yorik van Havre (yorik@uncreated.net) 2015 * - * * - * This file is part of the FreeCAD CAx development system. * - * * - * This library is free software; you can redistribute it and/or * - * modify it under the terms of the GNU Library General Public * - * License as published by the Free Software Foundation; either * - * version 2 of the License, or (at your option) any later version. * - * * - * This library 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 Library General Public License for more details. * - * * - * You should have received a copy of the GNU Library General Public * - * License along with this library; see the file COPYING.LIB. If not, * - * write to the Free Software Foundation, Inc., 59 Temple Place, * - * Suite 330, Boston, MA 02111-1307, USA * - * * - ***************************************************************************/ - - -#include "PreCompiled.h" +/*************************************************************************** + * Copyright (c) Yorik van Havre (yorik@uncreated.net) 2015 * + * * + * This file is part of the FreeCAD CAx development system. * + * * + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Library General Public * + * License as published by the Free Software Foundation; either * + * version 2 of the License, or (at your option) any later version. * + * * + * This library 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 Library General Public License for more details. * + * * + * You should have received a copy of the GNU Library General Public * + * License along with this library; see the file COPYING.LIB. If not, * + * write to the Free Software Foundation, Inc., 59 Temple Place, * + * Suite 330, Boston, MA 02111-1307, USA * + * * + ***************************************************************************/ + + +#include "PreCompiled.h" diff --git a/src/Mod/Draft/App/PreCompiled.h b/src/Mod/Draft/App/PreCompiled.h index f263d391d6..7064fdd774 100644 --- a/src/Mod/Draft/App/PreCompiled.h +++ b/src/Mod/Draft/App/PreCompiled.h @@ -1,62 +1,62 @@ -/*************************************************************************** - * Copyright (c) Yorik van Havre (yorik@uncreated.net) 2015 * - * * - * This file is part of the FreeCAD CAx development system. * - * * - * This library is free software; you can redistribute it and/or * - * modify it under the terms of the GNU Library General Public * - * License as published by the Free Software Foundation; either * - * version 2 of the License, or (at your option) any later version. * - * * - * This library 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 Library General Public License for more details. * - * * - * You should have received a copy of the GNU Library General Public * - * License along with this library; see the file COPYING.LIB. If not, * - * write to the Free Software Foundation, Inc., 59 Temple Place, * - * Suite 330, Boston, MA 02111-1307, USA * - * * - ***************************************************************************/ - - -#ifndef DRAFTUTILS_PRECOMPILED_H -#define DRAFTUTILS_PRECOMPILED_H - -#include - -// Exporting of App classes -#ifdef FC_OS_WIN32 -# define DraftUtilsExport __declspec(dllexport) -# define PartExport __declspec(dllexport) -# define BaseExport __declspec(dllimport) -#else // for Linux -# define DraftUtilsExport -# define PartExport -# define BaseExport -#endif - -#ifdef _MSC_VER -# pragma warning(disable : 4275) -#endif - -#ifdef _PreComp_ - -// standard -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#endif // _PreComp_ -#endif - +/*************************************************************************** + * Copyright (c) Yorik van Havre (yorik@uncreated.net) 2015 * + * * + * This file is part of the FreeCAD CAx development system. * + * * + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Library General Public * + * License as published by the Free Software Foundation; either * + * version 2 of the License, or (at your option) any later version. * + * * + * This library 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 Library General Public License for more details. * + * * + * You should have received a copy of the GNU Library General Public * + * License along with this library; see the file COPYING.LIB. If not, * + * write to the Free Software Foundation, Inc., 59 Temple Place, * + * Suite 330, Boston, MA 02111-1307, USA * + * * + ***************************************************************************/ + + +#ifndef DRAFTUTILS_PRECOMPILED_H +#define DRAFTUTILS_PRECOMPILED_H + +#include + +// Exporting of App classes +#ifdef FC_OS_WIN32 +# define DraftUtilsExport __declspec(dllexport) +# define PartExport __declspec(dllexport) +# define BaseExport __declspec(dllimport) +#else // for Linux +# define DraftUtilsExport +# define PartExport +# define BaseExport +#endif + +#ifdef _MSC_VER +# pragma warning(disable : 4275) +#endif + +#ifdef _PreComp_ + +// standard +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#endif // _PreComp_ +#endif + diff --git a/src/Mod/Draft/App/dxf.h b/src/Mod/Draft/App/dxf.h index 74615a90b8..9000924a01 100644 --- a/src/Mod/Draft/App/dxf.h +++ b/src/Mod/Draft/App/dxf.h @@ -1,162 +1,162 @@ -// dxf.h -// Copyright (c) 2009, Dan Heeks -// This program is released under the BSD license. See the file COPYING for details. -#pragma once - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//Following is required to be defined on Ubuntu with OCC 6.3.1 -#ifndef HAVE_IOSTREAM -#define HAVE_IOSTREAM -#endif - -typedef int Aci_t; // AutoCAD color index - -typedef enum -{ - eUnspecified = 0, // Unspecified (No units) - eInches, - eFeet, - eMiles, - eMillimeters, - eCentimeters, - eMeters, - eKilometers, - eMicroinches, - eMils, - eYards, - eAngstroms, - eNanometers, - eMicrons, - eDecimeters, - eDekameters, - eHectometers, - eGigameters, - eAstronomicalUnits, - eLightYears, - eParsecs -} eDxfUnits_t; - - -struct SplineData -{ - double norm[3]; - int degree; - int knots; - int control_points; - int fit_points; - int flag; - std::list starttanx; - std::list starttany; - std::list starttanz; - std::list endtanx; - std::list endtany; - std::list endtanz; - std::list knot; - std::list weight; - std::list controlx; - std::list controly; - std::list controlz; - std::list fitx; - std::list fity; - std::list fitz; -}; - -class CDxfWrite{ -private: - std::ofstream* m_ofs; - bool m_fail; - -public: - CDxfWrite(const char* filepath); - ~CDxfWrite(); - - bool Failed(){return m_fail;} - - void WriteLine(const double* s, const double* e, const char* layer_name ); - void WritePoint(const double*, const char*); - void WriteArc(const double* s, const double* e, const double* c, bool dir, const char* layer_name ); - void WriteEllipse(const double* c, double major_radius, double minor_radius, double rotation, double start_angle, double end_angle, bool dir, const char* layer_name ); - void WriteCircle(const double* c, double radius, const char* layer_name ); -}; - -// derive a class from this and implement it's virtual functions -class CDxfRead{ -private: - std::ifstream* m_ifs; - - bool m_fail; - char m_str[1024]; - char m_unused_line[1024]; - eDxfUnits_t m_eUnits; - bool m_measurement_inch; - char m_layer_name[1024]; - char m_section_name[1024]; - char m_block_name[1024]; - bool m_ignore_errors; - - - typedef std::map< std::string,Aci_t > LayerAciMap_t; - LayerAciMap_t m_layer_aci; // layer names -> layer color aci map - - bool ReadUnits(); - bool ReadLayer(); - bool ReadLine(); - bool ReadText(); - bool ReadArc(); - bool ReadCircle(); - bool ReadEllipse(); - bool ReadPoint(); - bool ReadSpline(); - bool ReadLwPolyLine(); - bool ReadPolyLine(); - bool ReadVertex(double *pVertex, bool *bulge_found, double *bulge); - void OnReadArc(double start_angle, double end_angle, double radius, const double* c, double z_extrusion_dir, bool hidden); - void OnReadCircle(const double* c, double radius, bool hidden); - void OnReadEllipse(const double* c, const double* m, double ratio, double start_angle, double end_angle); - bool ReadInsert(); - bool ReadDimension(); - bool ReadBlockInfo(); - - void get_line(); - void put_line(const char *value); - void DerefACI(); - -protected: - Aci_t m_aci; // manifest color name or 256 for layer color - -public: - CDxfRead(const char* filepath); // this opens the file - ~CDxfRead(); // this closes the file - - bool Failed(){return m_fail;} - void DoRead(const bool ignore_errors = false); // this reads the file and calls the following functions - - double mm( double value ) const; - - bool IgnoreErrors() const { return(m_ignore_errors); } - - virtual void OnReadLine(const double* /*s*/, const double* /*e*/, bool /*hidden*/){} - virtual void OnReadPoint(const double* /*s*/){} - virtual void OnReadText(const double* /*point*/, const double /*height*/, const char* /*text*/){} - virtual void OnReadArc(const double* /*s*/, const double* /*e*/, const double* /*c*/, bool /*dir*/, bool /*hidden*/){} - virtual void OnReadCircle(const double* /*s*/, const double* /*c*/, bool /*dir*/, bool /*hidden*/){} - virtual void OnReadEllipse(const double* /*c*/, double /*major_radius*/, double /*minor_radius*/, double /*rotation*/, double /*start_angle*/, double /*end_angle*/, bool /*dir*/){} - virtual void OnReadSpline(struct SplineData& /*sd*/){} - virtual void OnReadInsert(const double* /*point*/, const double* /*scale*/, const char* /*name*/, double /*rotation*/){} - virtual void OnReadDimension(const double* /*s*/, const double* /*e*/, const double* /*point*/, double /*rotation*/){} - virtual void AddGraphics() const { } - - std::string LayerName() const; - -}; +// dxf.h +// Copyright (c) 2009, Dan Heeks +// This program is released under the BSD license. See the file COPYING for details. +#pragma once + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +//Following is required to be defined on Ubuntu with OCC 6.3.1 +#ifndef HAVE_IOSTREAM +#define HAVE_IOSTREAM +#endif + +typedef int Aci_t; // AutoCAD color index + +typedef enum +{ + eUnspecified = 0, // Unspecified (No units) + eInches, + eFeet, + eMiles, + eMillimeters, + eCentimeters, + eMeters, + eKilometers, + eMicroinches, + eMils, + eYards, + eAngstroms, + eNanometers, + eMicrons, + eDecimeters, + eDekameters, + eHectometers, + eGigameters, + eAstronomicalUnits, + eLightYears, + eParsecs +} eDxfUnits_t; + + +struct SplineData +{ + double norm[3]; + int degree; + int knots; + int control_points; + int fit_points; + int flag; + std::list starttanx; + std::list starttany; + std::list starttanz; + std::list endtanx; + std::list endtany; + std::list endtanz; + std::list knot; + std::list weight; + std::list controlx; + std::list controly; + std::list controlz; + std::list fitx; + std::list fity; + std::list fitz; +}; + +class CDxfWrite{ +private: + std::ofstream* m_ofs; + bool m_fail; + +public: + CDxfWrite(const char* filepath); + ~CDxfWrite(); + + bool Failed(){return m_fail;} + + void WriteLine(const double* s, const double* e, const char* layer_name ); + void WritePoint(const double*, const char*); + void WriteArc(const double* s, const double* e, const double* c, bool dir, const char* layer_name ); + void WriteEllipse(const double* c, double major_radius, double minor_radius, double rotation, double start_angle, double end_angle, bool dir, const char* layer_name ); + void WriteCircle(const double* c, double radius, const char* layer_name ); +}; + +// derive a class from this and implement it's virtual functions +class CDxfRead{ +private: + std::ifstream* m_ifs; + + bool m_fail; + char m_str[1024]; + char m_unused_line[1024]; + eDxfUnits_t m_eUnits; + bool m_measurement_inch; + char m_layer_name[1024]; + char m_section_name[1024]; + char m_block_name[1024]; + bool m_ignore_errors; + + + typedef std::map< std::string,Aci_t > LayerAciMap_t; + LayerAciMap_t m_layer_aci; // layer names -> layer color aci map + + bool ReadUnits(); + bool ReadLayer(); + bool ReadLine(); + bool ReadText(); + bool ReadArc(); + bool ReadCircle(); + bool ReadEllipse(); + bool ReadPoint(); + bool ReadSpline(); + bool ReadLwPolyLine(); + bool ReadPolyLine(); + bool ReadVertex(double *pVertex, bool *bulge_found, double *bulge); + void OnReadArc(double start_angle, double end_angle, double radius, const double* c, double z_extrusion_dir, bool hidden); + void OnReadCircle(const double* c, double radius, bool hidden); + void OnReadEllipse(const double* c, const double* m, double ratio, double start_angle, double end_angle); + bool ReadInsert(); + bool ReadDimension(); + bool ReadBlockInfo(); + + void get_line(); + void put_line(const char *value); + void DerefACI(); + +protected: + Aci_t m_aci; // manifest color name or 256 for layer color + +public: + CDxfRead(const char* filepath); // this opens the file + ~CDxfRead(); // this closes the file + + bool Failed(){return m_fail;} + void DoRead(const bool ignore_errors = false); // this reads the file and calls the following functions + + double mm( double value ) const; + + bool IgnoreErrors() const { return(m_ignore_errors); } + + virtual void OnReadLine(const double* /*s*/, const double* /*e*/, bool /*hidden*/){} + virtual void OnReadPoint(const double* /*s*/){} + virtual void OnReadText(const double* /*point*/, const double /*height*/, const char* /*text*/){} + virtual void OnReadArc(const double* /*s*/, const double* /*e*/, const double* /*c*/, bool /*dir*/, bool /*hidden*/){} + virtual void OnReadCircle(const double* /*s*/, const double* /*c*/, bool /*dir*/, bool /*hidden*/){} + virtual void OnReadEllipse(const double* /*c*/, double /*major_radius*/, double /*minor_radius*/, double /*rotation*/, double /*start_angle*/, double /*end_angle*/, bool /*dir*/){} + virtual void OnReadSpline(struct SplineData& /*sd*/){} + virtual void OnReadInsert(const double* /*point*/, const double* /*scale*/, const char* /*name*/, double /*rotation*/){} + virtual void OnReadDimension(const double* /*s*/, const double* /*e*/, const double* /*point*/, double /*rotation*/){} + virtual void AddGraphics() const { } + + std::string LayerName() const; + +}; diff --git a/src/Mod/Draft/Init.py b/src/Mod/Draft/Init.py index f3415a091d..e9001b47ca 100644 --- a/src/Mod/Draft/Init.py +++ b/src/Mod/Draft/Init.py @@ -1,32 +1,32 @@ -#*************************************************************************** -#* * -#* Copyright (c) 2009 Yorik van Havre * -#* * -#* This program is free software; you can redistribute it and/or modify * -#* it under the terms of the GNU Lesser General Public License (LGPL) * -#* as published by the Free Software Foundation; either version 2 of * -#* the License, or (at your option) any later version. * -#* for detail see the LICENCE text file. * -#* * -#* This program 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 Library General Public License for more details. * -#* * -#* You should have received a copy of the GNU Library General Public * -#* License along with this program; if not, write to the Free Software * -#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * -#* USA * -#* * -#*************************************************************************** - -# add Import/Export types -App.addImportType("Autodesk DXF 2D (*.dxf)","importDXF") -App.addImportType("SVG as geometry (*.svg)","importSVG") -App.addImportType("Open CAD Format (*.oca *.gcad)","importOCA") -App.addImportType("Common airfoil data (*.dat)","importAirfoilDAT") -App.addExportType("Autodesk DXF 2D (*.dxf)","importDXF") -App.addExportType("Flattened SVG (*.svg)","importSVG") -App.addExportType("Open CAD Format (*.oca)","importOCA") -App.addImportType("Autodesk DWG 2D (*.dwg)","importDWG") -App.addExportType("Autodesk DWG 2D (*.dwg)","importDWG") +#*************************************************************************** +#* * +#* Copyright (c) 2009 Yorik van Havre * +#* * +#* This program is free software; you can redistribute it and/or modify * +#* it under the terms of the GNU Lesser General Public License (LGPL) * +#* as published by the Free Software Foundation; either version 2 of * +#* the License, or (at your option) any later version. * +#* for detail see the LICENCE text file. * +#* * +#* This program 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 Library General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#*************************************************************************** + +# add Import/Export types +App.addImportType("Autodesk DXF 2D (*.dxf)","importDXF") +App.addImportType("SVG as geometry (*.svg)","importSVG") +App.addImportType("Open CAD Format (*.oca *.gcad)","importOCA") +App.addImportType("Common airfoil data (*.dat)","importAirfoilDAT") +App.addExportType("Autodesk DXF 2D (*.dxf)","importDXF") +App.addExportType("Flattened SVG (*.svg)","importSVG") +App.addExportType("Open CAD Format (*.oca)","importOCA") +App.addImportType("Autodesk DWG 2D (*.dwg)","importDWG") +App.addExportType("Autodesk DWG 2D (*.dwg)","importDWG") diff --git a/src/Mod/Draft/Resources/Draft.qrc b/src/Mod/Draft/Resources/Draft.qrc index 0e9c089cb4..1acbcdab98 100644 --- a/src/Mod/Draft/Resources/Draft.qrc +++ b/src/Mod/Draft/Resources/Draft.qrc @@ -1,154 +1,154 @@ - - - icons/Draft_2DShapeView.svg - icons/Draft_AddPoint.svg - icons/Draft_AddToGroup.svg - icons/Draft_Apply.svg - icons/Draft_Arc.svg - icons/Draft_Arc_3Points.svg - icons/Draft_Array.svg - icons/Draft_AutoGroup.svg - icons/Draft_AutoGroup_on.svg - icons/Draft_AutoGroup_off.svg - icons/Draft_BezCurve.svg - icons/Draft_BezSharpNode.svg - icons/Draft_BezSymNode.svg - icons/Draft_BezTanNode.svg - icons/Draft_BSpline.svg - icons/Draft_Circle.svg - icons/Draft_Clone.svg - icons/Draft_Construction.svg - icons/Draft_CubicBezCurve.svg - icons/Draft_Cursor.svg - icons/Draft_DelPoint.svg - icons/Draft_Dimension.svg - icons/Draft_Dimension_Tree.svg - icons/Draft_Dot.svg - icons/Draft_Downgrade.svg - icons/Draft_Draft.svg - icons/Draft_Draft2Sketch.svg - icons/Draft_Drawing.svg - icons/Draft_Edit.svg - icons/Draft_Ellipse.svg - icons/Draft_Facebinder.svg - icons/Draft_Facebinder_Provider.svg - icons/Draft_Fillet.svg - icons/Draft_Finish.svg - icons/Draft_FlipDimension.svg - icons/Draft_Grid.svg - icons/Draft_Heal.svg - icons/Draft_Join.svg - icons/Draft_Label.svg - icons/Draft_Layer.svg - icons/Draft_Line.svg - icons/Draft_LinkArray.svg - icons/Draft_Lock.svg - icons/Draft_Macro.svg - icons/Draft_Mirror.svg - icons/Draft_Move.svg - icons/Draft_Offset.svg - icons/Draft_PathArray.svg - icons/Draft_PathLinkArray.svg - icons/Draft_Point.svg - icons/Draft_PointArray.svg - icons/Draft_Polygon.svg - icons/Draft_Rectangle.svg - icons/Draft_Rotate.svg - icons/Draft_Scale.svg - icons/Draft_SelectGroup.svg - icons/Draft_SelectPlane.svg - icons/Draft_ShapeString.svg - icons/Draft_Slope.svg - icons/Draft_Snap.svg - icons/Draft_Split.svg - icons/Draft_Stretch.svg - icons/Draft_SubelementHighlight.svg - icons/Draft_SwitchMode.svg - icons/Draft_Text.svg - icons/Draft_Trimex.svg - icons/Draft_Upgrade.svg - icons/Draft_VisGroup.svg - icons/Draft_Wipe.svg - icons/Draft_Wire.svg - icons/Draft_WireToBSpline.svg - icons/DraftWorkbench.svg - icons/preferences-draft.svg - icons/Snap_Angle.svg - icons/Snap_Center.svg - icons/Snap_Dimensions.svg - icons/Snap_Endpoint.svg - icons/Snap_Extension.svg - icons/Snap_Grid.svg - icons/Snap_Intersection.svg - icons/Snap_Lock.svg - icons/Snap_Midpoint.svg - icons/Snap_Near.svg - icons/Snap_Ortho.svg - icons/Snap_Parallel.svg - icons/Snap_Perpendicular.svg - icons/Snap_Special.svg - icons/Snap_WorkingPlane.svg - patterns/brick01 - patterns/concrete.svg - patterns/cross.svg - patterns/diagonal1.svg - patterns/diagonal2.svg - patterns/earth.svg - patterns/hbone.svg - patterns/line.svg - patterns/plus.svg - patterns/simple.svg - patterns/solid.svg - patterns/square.svg - patterns/steel.svg - patterns/wood.svg - patterns/woodgrain.svg - translations/Draft_af.qm - translations/Draft_ar.qm - translations/Draft_ca.qm - translations/Draft_cs.qm - translations/Draft_de.qm - translations/Draft_el.qm - translations/Draft_es-ES.qm - translations/Draft_eu.qm - translations/Draft_fi.qm - translations/Draft_fil.qm - translations/Draft_fr.qm - translations/Draft_gl.qm - translations/Draft_hr.qm - translations/Draft_hu.qm - translations/Draft_id.qm - translations/Draft_it.qm - translations/Draft_ja.qm - translations/Draft_kab.qm - translations/Draft_ko.qm - translations/Draft_lt.qm - translations/Draft_nl.qm - translations/Draft_no.qm - translations/Draft_pl.qm - translations/Draft_pt-BR.qm - translations/Draft_pt-PT.qm - translations/Draft_ro.qm - translations/Draft_ru.qm - translations/Draft_sk.qm - translations/Draft_sl.qm - translations/Draft_sr.qm - translations/Draft_sv-SE.qm - translations/Draft_tr.qm - translations/Draft_uk.qm - translations/Draft_val-ES.qm - translations/Draft_vi.qm - translations/Draft_zh-CN.qm - translations/Draft_zh-TW.qm - ui/preferences-draft.ui - ui/preferences-draftsnap.ui - ui/preferences-drafttexts.ui - ui/preferences-draftvisual.ui - ui/preferences-dwg.ui - ui/preferences-dxf.ui - ui/preferences-oca.ui - ui/preferences-svg.ui - ui/TaskSelectPlane.ui - ui/TaskShapeString.ui - - + + + icons/Draft_2DShapeView.svg + icons/Draft_AddPoint.svg + icons/Draft_AddToGroup.svg + icons/Draft_Apply.svg + icons/Draft_Arc.svg + icons/Draft_Arc_3Points.svg + icons/Draft_Array.svg + icons/Draft_AutoGroup.svg + icons/Draft_AutoGroup_on.svg + icons/Draft_AutoGroup_off.svg + icons/Draft_BezCurve.svg + icons/Draft_BezSharpNode.svg + icons/Draft_BezSymNode.svg + icons/Draft_BezTanNode.svg + icons/Draft_BSpline.svg + icons/Draft_Circle.svg + icons/Draft_Clone.svg + icons/Draft_Construction.svg + icons/Draft_CubicBezCurve.svg + icons/Draft_Cursor.svg + icons/Draft_DelPoint.svg + icons/Draft_Dimension.svg + icons/Draft_Dimension_Tree.svg + icons/Draft_Dot.svg + icons/Draft_Downgrade.svg + icons/Draft_Draft.svg + icons/Draft_Draft2Sketch.svg + icons/Draft_Drawing.svg + icons/Draft_Edit.svg + icons/Draft_Ellipse.svg + icons/Draft_Facebinder.svg + icons/Draft_Facebinder_Provider.svg + icons/Draft_Fillet.svg + icons/Draft_Finish.svg + icons/Draft_FlipDimension.svg + icons/Draft_Grid.svg + icons/Draft_Heal.svg + icons/Draft_Join.svg + icons/Draft_Label.svg + icons/Draft_Layer.svg + icons/Draft_Line.svg + icons/Draft_LinkArray.svg + icons/Draft_Lock.svg + icons/Draft_Macro.svg + icons/Draft_Mirror.svg + icons/Draft_Move.svg + icons/Draft_Offset.svg + icons/Draft_PathArray.svg + icons/Draft_PathLinkArray.svg + icons/Draft_Point.svg + icons/Draft_PointArray.svg + icons/Draft_Polygon.svg + icons/Draft_Rectangle.svg + icons/Draft_Rotate.svg + icons/Draft_Scale.svg + icons/Draft_SelectGroup.svg + icons/Draft_SelectPlane.svg + icons/Draft_ShapeString.svg + icons/Draft_Slope.svg + icons/Draft_Snap.svg + icons/Draft_Split.svg + icons/Draft_Stretch.svg + icons/Draft_SubelementHighlight.svg + icons/Draft_SwitchMode.svg + icons/Draft_Text.svg + icons/Draft_Trimex.svg + icons/Draft_Upgrade.svg + icons/Draft_VisGroup.svg + icons/Draft_Wipe.svg + icons/Draft_Wire.svg + icons/Draft_WireToBSpline.svg + icons/DraftWorkbench.svg + icons/preferences-draft.svg + icons/Snap_Angle.svg + icons/Snap_Center.svg + icons/Snap_Dimensions.svg + icons/Snap_Endpoint.svg + icons/Snap_Extension.svg + icons/Snap_Grid.svg + icons/Snap_Intersection.svg + icons/Snap_Lock.svg + icons/Snap_Midpoint.svg + icons/Snap_Near.svg + icons/Snap_Ortho.svg + icons/Snap_Parallel.svg + icons/Snap_Perpendicular.svg + icons/Snap_Special.svg + icons/Snap_WorkingPlane.svg + patterns/brick01 + patterns/concrete.svg + patterns/cross.svg + patterns/diagonal1.svg + patterns/diagonal2.svg + patterns/earth.svg + patterns/hbone.svg + patterns/line.svg + patterns/plus.svg + patterns/simple.svg + patterns/solid.svg + patterns/square.svg + patterns/steel.svg + patterns/wood.svg + patterns/woodgrain.svg + translations/Draft_af.qm + translations/Draft_ar.qm + translations/Draft_ca.qm + translations/Draft_cs.qm + translations/Draft_de.qm + translations/Draft_el.qm + translations/Draft_es-ES.qm + translations/Draft_eu.qm + translations/Draft_fi.qm + translations/Draft_fil.qm + translations/Draft_fr.qm + translations/Draft_gl.qm + translations/Draft_hr.qm + translations/Draft_hu.qm + translations/Draft_id.qm + translations/Draft_it.qm + translations/Draft_ja.qm + translations/Draft_kab.qm + translations/Draft_ko.qm + translations/Draft_lt.qm + translations/Draft_nl.qm + translations/Draft_no.qm + translations/Draft_pl.qm + translations/Draft_pt-BR.qm + translations/Draft_pt-PT.qm + translations/Draft_ro.qm + translations/Draft_ru.qm + translations/Draft_sk.qm + translations/Draft_sl.qm + translations/Draft_sr.qm + translations/Draft_sv-SE.qm + translations/Draft_tr.qm + translations/Draft_uk.qm + translations/Draft_val-ES.qm + translations/Draft_vi.qm + translations/Draft_zh-CN.qm + translations/Draft_zh-TW.qm + ui/preferences-draft.ui + ui/preferences-draftsnap.ui + ui/preferences-drafttexts.ui + ui/preferences-draftvisual.ui + ui/preferences-dwg.ui + ui/preferences-dxf.ui + ui/preferences-oca.ui + ui/preferences-svg.ui + ui/TaskSelectPlane.ui + ui/TaskShapeString.ui + + diff --git a/src/Mod/Draft/draft.dox b/src/Mod/Draft/draft.dox index 81558a88a3..cf18f75ab0 100644 --- a/src/Mod/Draft/draft.dox +++ b/src/Mod/Draft/draft.dox @@ -1,5 +1,5 @@ -/** \defgroup DRAFT Draft - * \ingroup PYTHONWORKBENCHES - * \brief Basic 2D drawing tools and other generic tools - */ - +/** \defgroup DRAFT Draft + * \ingroup PYTHONWORKBENCHES + * \brief Basic 2D drawing tools and other generic tools + */ + diff --git a/src/Mod/Fem/.gitattributes b/src/Mod/Fem/.gitattributes deleted file mode 100644 index 0ecfd3db6a..0000000000 --- a/src/Mod/Fem/.gitattributes +++ /dev/null @@ -1,62 +0,0 @@ -# In case people don't have core.autocrlf set, this will manage the default line-ending -# behaviour for all files recursively -# * text=auto -# to be save this will be commented - - -# for more information see forum topic and pull request -# https://github.com/FreeCAD/FreeCAD/pull/2752 -# https://forum.freecadweb.org/viewtopic.php?f=17&t=41117 - - -# get all used file types -# in a directory in a bash use -# find . -type f -name '*.*' | sed 's|.*\.||' | sort -u -# add all of them either to text or binary - - -# Explicitly declare which files we wish to always normalize line-endings on - -# standard endings -*.bat text -*.cpp text -*.csv text -*.h text -*.md text -*.py text -*.qrc text -*.ts text -*.txt text -*.ui text -*.xml text -*.yml text - -# Fem specific endings -*.dat text -*.frd text -*.geo text -*.inp text -*.sif text -*.unv text -*.vtk text -*.z88 text - - -# These files will always be checked out with CRLF, i.e. windows-style line endings. This -# really should not be needed... -# *.SomeWindowsFileExtensionThatReallyRequiresCRLFEvenInLinux eol=crlf - - -# These files should be ignored as it pertains to line-endings, because they are binary. -# Since auto normalize is deactivated all these could be commented too. -# *.dox binary -# *.FCStd binary -# *.jpg binary -# *.png binary -# *.pyc binary -# *.qm binary -# *.svg binary - - -# use git to manually correct the file endings -# git add --renormalize . diff --git a/src/Mod/Idf/Idflibs/License.txt b/src/Mod/Idf/Idflibs/License.txt index 8db7246284..c05833f667 100644 --- a/src/Mod/Idf/Idflibs/License.txt +++ b/src/Mod/Idf/Idflibs/License.txt @@ -1,6 +1,6 @@ -(c) 2010 Milos Koutny (milos.koutny@gmail.com) -All parts in this directory are supported by Milos Koutny -and licensed under: - -Creative Commons Attribution Share Alike - +(c) 2010 Milos Koutny (milos.koutny@gmail.com) +All parts in this directory are supported by Milos Koutny +and licensed under: + +Creative Commons Attribution Share Alike + diff --git a/src/Mod/Idf/Idflibs/footprints_models.csv b/src/Mod/Idf/Idflibs/footprints_models.csv index 3cf356eb68..ae67f730a4 100644 --- a/src/Mod/Idf/Idflibs/footprints_models.csv +++ b/src/Mod/Idf/Idflibs/footprints_models.csv @@ -1,35 +1,35 @@ -"FOOTPRINT" "STEP FILE" -"SOT23-R" "SOT23.igs" -"SMD_C_0805-R" "0805_SMD.stp" -"SMD_C_1210-R" "1210_SMD.stp" -"SMD_R_1206-R" "1206_SMD.stp" -"SMD_C_0603-R" "0603_SMD.stp" -"SMD_R_0603-R" "0603_SMD.stp" -"MINISMDC-1812-R" "1812_SMD.stp" -"SMD_C_2225-R" "2225_SMD.stp" -"SMD_R_2512-R" "2512_SMD.stp" -"1812PS" "1812_SMD.stp" -"TSSOP8_065M-R" "TSS0P_8.stp" -"MSOP10E_LT" "MSOP_10.stp" -"TCMT11XX" "TCMT1107_4.stp" -"SMB-TB" "SMB_DO_214AA.stp" -"SOT404-GDS-R" "SOT404.igs" -"SOT428-A1-A2C-R" "SOT428_DPAK.stp" -"SOT96-1-R" "SOT_96.stp" -"SOT323-BEC-R" "SOT_323_3.stp" -"SOD523-R" "SOD_523.stp" -"SMC" "SMC_DO_214AB.stp" -"SOD523-R" "SOD_523.stp" -"TSM-104-01-L-DV" "TSM_104_01_L_DV_A.stp" -"TSM-103-01-L-DV-A" "TSM_103_01_L_DV_A.stp" -"SOD323-R" "SOD_323.igs" -"VC0603-R" "VC0603_SMD.stp" -"RLF12545" "RLF_12545.igs" -"CAPAE830X1050" "CAP_50SGV_8_10.stp" -"RLF7030-R" "RLF_7030.stp" -"EPS_B66285E" "EPL22_6_16.stp" -"EPS_B66285I" "I22_2_5_16.stp" - - - - +"FOOTPRINT" "STEP FILE" +"SOT23-R" "SOT23.igs" +"SMD_C_0805-R" "0805_SMD.stp" +"SMD_C_1210-R" "1210_SMD.stp" +"SMD_R_1206-R" "1206_SMD.stp" +"SMD_C_0603-R" "0603_SMD.stp" +"SMD_R_0603-R" "0603_SMD.stp" +"MINISMDC-1812-R" "1812_SMD.stp" +"SMD_C_2225-R" "2225_SMD.stp" +"SMD_R_2512-R" "2512_SMD.stp" +"1812PS" "1812_SMD.stp" +"TSSOP8_065M-R" "TSS0P_8.stp" +"MSOP10E_LT" "MSOP_10.stp" +"TCMT11XX" "TCMT1107_4.stp" +"SMB-TB" "SMB_DO_214AA.stp" +"SOT404-GDS-R" "SOT404.igs" +"SOT428-A1-A2C-R" "SOT428_DPAK.stp" +"SOT96-1-R" "SOT_96.stp" +"SOT323-BEC-R" "SOT_323_3.stp" +"SOD523-R" "SOD_523.stp" +"SMC" "SMC_DO_214AB.stp" +"SOD523-R" "SOD_523.stp" +"TSM-104-01-L-DV" "TSM_104_01_L_DV_A.stp" +"TSM-103-01-L-DV-A" "TSM_103_01_L_DV_A.stp" +"SOD323-R" "SOD_323.igs" +"VC0603-R" "VC0603_SMD.stp" +"RLF12545" "RLF_12545.igs" +"CAPAE830X1050" "CAP_50SGV_8_10.stp" +"RLF7030-R" "RLF_7030.stp" +"EPS_B66285E" "EPL22_6_16.stp" +"EPS_B66285I" "I22_2_5_16.stp" + + + + diff --git a/src/Mod/Idf/Init.py b/src/Mod/Idf/Init.py index 7ba9632376..6f5c273d9f 100644 --- a/src/Mod/Idf/Init.py +++ b/src/Mod/Idf/Init.py @@ -1,36 +1,36 @@ -# Idf init module -# (c) 2003 Juergen Riegel -# -# Gathering all the information to start FreeCAD -# This is the second one of three init scripts, the third one -# runs when the gui is up - -#*************************************************************************** -#* (c) Juergen Riegel (juergen.riegel@web.de) 2002 * -#* * -#* This file is part of the FreeCAD CAx development system. * -#* * -#* This program is free software; you can redistribute it and/or modify * -#* it under the terms of the GNU Lesser General Public License (LGPL) * -#* as published by the Free Software Foundation; either version 2 of * -#* the License, or (at your option) any later version. * -#* for detail see the LICENCE text file. * -#* * -#* FreeCAD 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 Lesser General Public License for more details. * -#* * -#* You should have received a copy of the GNU Library General Public * -#* License along with FreeCAD; if not, write to the Free Software * -#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * -#* USA * -#* * -#* Juergen Riegel 2002 * -#***************************************************************************/ - - - -# two options for IDF added by Milos Koutny (12-Feb-2010) -FreeCAD.addImportType("IDF emn file File Type (*.emn)","Idf") -#FreeCAD.addImportType("IDF emp File Type (*.emp)","Import_Emp") +# Idf init module +# (c) 2003 Juergen Riegel +# +# Gathering all the information to start FreeCAD +# This is the second one of three init scripts, the third one +# runs when the gui is up + +#*************************************************************************** +#* (c) Juergen Riegel (juergen.riegel@web.de) 2002 * +#* * +#* This file is part of the FreeCAD CAx development system. * +#* * +#* This program is free software; you can redistribute it and/or modify * +#* it under the terms of the GNU Lesser General Public License (LGPL) * +#* as published by the Free Software Foundation; either version 2 of * +#* the License, or (at your option) any later version. * +#* for detail see the LICENCE text file. * +#* * +#* FreeCAD 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 Lesser General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with FreeCAD; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#* Juergen Riegel 2002 * +#***************************************************************************/ + + + +# two options for IDF added by Milos Koutny (12-Feb-2010) +FreeCAD.addImportType("IDF emn file File Type (*.emn)","Idf") +#FreeCAD.addImportType("IDF emp File Type (*.emp)","Import_Emp") diff --git a/src/Mod/OpenSCAD/Init.py b/src/Mod/OpenSCAD/Init.py index da643fbf01..9f3d6d0df2 100644 --- a/src/Mod/OpenSCAD/Init.py +++ b/src/Mod/OpenSCAD/Init.py @@ -1,37 +1,37 @@ -# FreeCAD init script of the OpenSCAD module -# (c) 2001 Juergen Riegel - -#*************************************************************************** -#* (c) Juergen Riegel (juergen.riegel@web.de) 2002 * -#* * -#* This file is part of the FreeCAD CAx development system. * -#* * -#* This program is free software; you can redistribute it and/or modify * -#* it under the terms of the GNU Lesser General Public License (LGPL) * -#* as published by the Free Software Foundation; either version 2 of * -#* the License, or (at your option) any later version. * -#* for detail see the LICENCE text file. * -#* * -#* FreeCAD 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 Lesser General Public License for more details. * -#* * -#* You should have received a copy of the GNU Library General Public * -#* License along with FreeCAD; if not, write to the Free Software * -#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * -#* USA * -#* * -#* Juergen Riegel 2002 * -#***************************************************************************/ -import FreeCAD,os -FreeCAD.addImportType("OpenSCAD CSG Format (*.csg)","importCSG") -param = FreeCAD.ParamGet(\ - "User parameter:BaseApp/Preferences/Mod/OpenSCAD") -openscadfilename = param.GetString('openscadexecutable') -openscadbin = openscadfilename and os.path.isfile(openscadfilename) -if openscadbin: - FreeCAD.addImportType("OpenSCAD Format (*.scad)","importCSG") -FreeCAD.addExportType("OpenSCAD CSG Format (*.csg)","exportCSG") -FreeCAD.addExportType("OpenSCAD Format (*.scad)","exportCSG") - +# FreeCAD init script of the OpenSCAD module +# (c) 2001 Juergen Riegel + +#*************************************************************************** +#* (c) Juergen Riegel (juergen.riegel@web.de) 2002 * +#* * +#* This file is part of the FreeCAD CAx development system. * +#* * +#* This program is free software; you can redistribute it and/or modify * +#* it under the terms of the GNU Lesser General Public License (LGPL) * +#* as published by the Free Software Foundation; either version 2 of * +#* the License, or (at your option) any later version. * +#* for detail see the LICENCE text file. * +#* * +#* FreeCAD 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 Lesser General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with FreeCAD; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#* Juergen Riegel 2002 * +#***************************************************************************/ +import FreeCAD,os +FreeCAD.addImportType("OpenSCAD CSG Format (*.csg)","importCSG") +param = FreeCAD.ParamGet(\ + "User parameter:BaseApp/Preferences/Mod/OpenSCAD") +openscadfilename = param.GetString('openscadexecutable') +openscadbin = openscadfilename and os.path.isfile(openscadfilename) +if openscadbin: + FreeCAD.addImportType("OpenSCAD Format (*.scad)","importCSG") +FreeCAD.addExportType("OpenSCAD CSG Format (*.csg)","exportCSG") +FreeCAD.addExportType("OpenSCAD Format (*.scad)","exportCSG") + diff --git a/src/Mod/OpenSCAD/OpenSCAD.dox b/src/Mod/OpenSCAD/OpenSCAD.dox index 7b437f1e3d..9bae93322c 100644 --- a/src/Mod/OpenSCAD/OpenSCAD.dox +++ b/src/Mod/OpenSCAD/OpenSCAD.dox @@ -1,5 +1,5 @@ -/** \defgroup OPENSCAD OpenSCAD - * \ingroup PYTHONWORKBENCHES - * \brief Interface with OpenSCAD - */ - +/** \defgroup OPENSCAD OpenSCAD + * \ingroup PYTHONWORKBENCHES + * \brief Interface with OpenSCAD + */ + diff --git a/src/Mod/OpenSCAD/Resources/OpenSCAD.qrc b/src/Mod/OpenSCAD/Resources/OpenSCAD.qrc index 0d9a62388b..52e78016d5 100644 --- a/src/Mod/OpenSCAD/Resources/OpenSCAD.qrc +++ b/src/Mod/OpenSCAD/Resources/OpenSCAD.qrc @@ -1,54 +1,54 @@ - - - icons/preferences-openscad.svg - icons/OpenSCAD_AddOpenSCADElement.svg - icons/OpenSCAD_ColorCodeShape.svg - icons/OpenSCAD_RefineShapeFeature.svg - icons/OpenSCAD_IncreaseToleranceFeature.svg - icons/OpenSCAD_ReplaceObject.svg - icons/OpenSCAD_RemoveSubtree.svg - icons/OpenSCAD_Explode_Group.svg - icons/OpenSCAD_MeshBooleans.svg - icons/OpenSCAD_Hull.svg - icons/OpenSCAD_Minkowski.svg - icons/OpenSCADWorkbench.svg - ui/openscadprefs-base.ui - translations/OpenSCAD_tr.qm - translations/OpenSCAD_sv-SE.qm - translations/OpenSCAD_de.qm - translations/OpenSCAD_pl.qm - translations/OpenSCAD_fi.qm - translations/OpenSCAD_zh-TW.qm - translations/OpenSCAD_no.qm - translations/OpenSCAD_nl.qm - translations/OpenSCAD_pt-BR.qm - translations/OpenSCAD_uk.qm - translations/OpenSCAD_cs.qm - translations/OpenSCAD_sk.qm - translations/OpenSCAD_fr.qm - translations/OpenSCAD_ru.qm - translations/OpenSCAD_af.qm - translations/OpenSCAD_hr.qm - translations/OpenSCAD_es-ES.qm - translations/OpenSCAD_zh-CN.qm - translations/OpenSCAD_ja.qm - translations/OpenSCAD_ro.qm - translations/OpenSCAD_hu.qm - translations/OpenSCAD_it.qm - translations/OpenSCAD_pt-PT.qm - translations/OpenSCAD_sr.qm - translations/OpenSCAD_el.qm - translations/OpenSCAD_sl.qm - translations/OpenSCAD_eu.qm - translations/OpenSCAD_ca.qm - translations/OpenSCAD_gl.qm - translations/OpenSCAD_kab.qm - translations/OpenSCAD_ko.qm - translations/OpenSCAD_fil.qm - translations/OpenSCAD_id.qm - translations/OpenSCAD_lt.qm - translations/OpenSCAD_val-ES.qm - translations/OpenSCAD_ar.qm - translations/OpenSCAD_vi.qm - - + + + icons/preferences-openscad.svg + icons/OpenSCAD_AddOpenSCADElement.svg + icons/OpenSCAD_ColorCodeShape.svg + icons/OpenSCAD_RefineShapeFeature.svg + icons/OpenSCAD_IncreaseToleranceFeature.svg + icons/OpenSCAD_ReplaceObject.svg + icons/OpenSCAD_RemoveSubtree.svg + icons/OpenSCAD_Explode_Group.svg + icons/OpenSCAD_MeshBooleans.svg + icons/OpenSCAD_Hull.svg + icons/OpenSCAD_Minkowski.svg + icons/OpenSCADWorkbench.svg + ui/openscadprefs-base.ui + translations/OpenSCAD_tr.qm + translations/OpenSCAD_sv-SE.qm + translations/OpenSCAD_de.qm + translations/OpenSCAD_pl.qm + translations/OpenSCAD_fi.qm + translations/OpenSCAD_zh-TW.qm + translations/OpenSCAD_no.qm + translations/OpenSCAD_nl.qm + translations/OpenSCAD_pt-BR.qm + translations/OpenSCAD_uk.qm + translations/OpenSCAD_cs.qm + translations/OpenSCAD_sk.qm + translations/OpenSCAD_fr.qm + translations/OpenSCAD_ru.qm + translations/OpenSCAD_af.qm + translations/OpenSCAD_hr.qm + translations/OpenSCAD_es-ES.qm + translations/OpenSCAD_zh-CN.qm + translations/OpenSCAD_ja.qm + translations/OpenSCAD_ro.qm + translations/OpenSCAD_hu.qm + translations/OpenSCAD_it.qm + translations/OpenSCAD_pt-PT.qm + translations/OpenSCAD_sr.qm + translations/OpenSCAD_el.qm + translations/OpenSCAD_sl.qm + translations/OpenSCAD_eu.qm + translations/OpenSCAD_ca.qm + translations/OpenSCAD_gl.qm + translations/OpenSCAD_kab.qm + translations/OpenSCAD_ko.qm + translations/OpenSCAD_fil.qm + translations/OpenSCAD_id.qm + translations/OpenSCAD_lt.qm + translations/OpenSCAD_val-ES.qm + translations/OpenSCAD_ar.qm + translations/OpenSCAD_vi.qm + + diff --git a/src/Mod/OpenSCAD/importCSG.py b/src/Mod/OpenSCAD/importCSG.py index 8154875e59..f59e1285b4 100644 --- a/src/Mod/OpenSCAD/importCSG.py +++ b/src/Mod/OpenSCAD/importCSG.py @@ -1,1207 +1,1207 @@ -# -*- coding: utf8 -*- - -#*************************************************************************** -#* * -#* Copyright (c) 2012 Keith Sloan * -#* * -#* This program is free software; you can redistribute it and/or modify * -#* it under the terms of the GNU Lesser General Public License (LGPL) * -#* as published by the Free Software Foundation; either version 2 of * -#* the License, or (at your option) any later version. * -#* for detail see the LICENCE text file. * -#* * -#* This program 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 Library General Public License for more details. * -#* * -#* You should have received a copy of the GNU Library General Public * -#* License along with this program; if not, write to the Free Software * -#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * -#* USA * -#* * -#* Acknowledgements : * -#* * -#* Thanks to shoogen on the FreeCAD forum and Peter Li * -#* for programming advice and some code. * -#* * -#* * -#*************************************************************************** -__title__="FreeCAD OpenSCAD Workbench - CSG importer" -__author__ = "Keith Sloan " -__url__ = ["http://www.sloan-home.co.uk/ImportCSG"] - -printverbose = False - -import FreeCAD, io, os, sys -if FreeCAD.GuiUp: - import FreeCADGui - gui = True -else: - if printverbose: print("FreeCAD Gui not present.") - gui = False - - -import ply.lex as lex -import ply.yacc as yacc -import Part - -from OpenSCADFeatures import * -from OpenSCADUtils import * - -params = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/OpenSCAD") -printverbose = params.GetBool('printVerbose',False) - -# Get the token map from the lexer. This is required. -import tokrules -from tokrules import tokens - -try: - _encoding = QtGui.QApplication.UnicodeUTF8 - def translate(context, text): - "convenience function for Qt translator" - from PySide import QtGui - return QtGui.QApplication.translate(context, text, None, _encoding) -except AttributeError: - def translate(context, text): - "convenience function for Qt translator" - from PySide import QtGui - return QtGui.QApplication.translate(context, text, None) - -def open(filename): - "called when freecad opens a file." - global doc - global pathName - docname = os.path.splitext(os.path.basename(filename))[0] - doc = FreeCAD.newDocument(docname) - if filename.lower().endswith('.scad'): - tmpfile=callopenscad(filename) - if workaroundforissue128needed(): - pathName = '' #https://github.com/openscad/openscad/issues/128 - #pathName = os.getcwd() #https://github.com/openscad/openscad/issues/128 - else: - pathName = os.path.dirname(os.path.normpath(filename)) - processcsg(tmpfile) - try: - os.unlink(tmpfile) - except OSError: - pass - else: - pathName = os.path.dirname(os.path.normpath(filename)) - processcsg(filename) - return doc - -def insert(filename,docname): - "called when freecad imports a file" - global doc - global pathName - groupname = os.path.splitext(os.path.basename(filename))[0] - try: - doc=FreeCAD.getDocument(docname) - except NameError: - doc=FreeCAD.newDocument(docname) - #importgroup = doc.addObject("App::DocumentObjectGroup",groupname) - if filename.lower().endswith('.scad'): - tmpfile=callopenscad(filename) - if workaroundforissue128needed(): - pathName = '' #https://github.com/openscad/openscad/issues/128 - #pathName = os.getcwd() #https://github.com/openscad/openscad/issues/128 - else: - pathName = os.path.dirname(os.path.normpath(filename)) - processcsg(tmpfile) - try: - os.unlink(tmpfile) - except OSError: - pass - else: - pathName = os.path.dirname(os.path.normpath(filename)) - processcsg(filename) - -def processcsg(filename): - global doc - - if printverbose: print ('ImportCSG Version 0.6a') - # Build the lexer - if printverbose: print('Start Lex') - lex.lex(module=tokrules) - if printverbose: print('End Lex') - - # Build the parser - if printverbose: print('Load Parser') - # No debug out otherwise Linux has protection exception - parser = yacc.yacc(debug=0) - if printverbose: print('Parser Loaded') - # Give the lexer some input - #f=open('test.scad', 'r') - f = io.open(filename, 'r', encoding="utf8") - #lexer.input(f.read()) - - if printverbose: print('Start Parser') - # Swap statements to enable Parser debugging - #result = parser.parse(f.read(),debug=1) - result = parser.parse(f.read()) - f.close() - if printverbose: - print('End Parser') - print(result) - FreeCAD.Console.PrintMessage('End processing CSG file\n') - doc.recompute() - -def p_block_list_(p): - ''' - block_list : statement - | block_list statement - | statementwithmod - | block_list statementwithmod - ''' - #if printverbose: print("Block List") - #if printverbose: print(p[1]) - if(len(p) > 2) : - if printverbose: print(p[2]) - p[0] = p[1] + p[2] - else : - p[0] = p[1] - #if printverbose: print("End Block List") - -def p_render_action(p): - 'render_action : render LPAREN keywordargument_list RPAREN OBRACE block_list EBRACE' - if printverbose: print("Render (ignored)") - p[0] = p[6] - -def p_group_action1(p): - 'group_action1 : group LPAREN RPAREN OBRACE block_list EBRACE' - if printverbose: print("Group") -# Test if need for implicit fuse - if (len(p[5]) > 1) : - p[0] = [fuse(p[5],"Group")] - else : - p[0] = p[5] - -def p_group_action2(p) : - 'group_action2 : group LPAREN RPAREN SEMICOL' - if printverbose: print("Group2") - p[0] = [] - -def p_boolean(p) : - ''' - boolean : true - | false - ''' - p[0] = p[1] - -#def p_string(p): -# 'string : QUOTE ID QUOTE' -# p[0] = p[2] - -def p_stripped_string(p): - 'stripped_string : STRING' - p[0] = p[1].strip('"') - -def p_statement(p): - '''statement : part - | operation - | multmatrix_action - | group_action1 - | group_action2 - | color_action - | render_action - | not_supported - ''' - p[0] = p[1] - -def p_anymodifier(p): - '''anymodifier : MODIFIERBACK - | MODIFIERDEBUG - | MODIFIERROOT - | MODIFIERDISABLE - ''' - #just return the plain modifier for now - #has to be changed when the modifiers are implemented - #please note that disabled objects usually are stripped of the CSG output during compilation - p[0] = p[1] - -def p_statementwithmod(p): - '''statementwithmod : anymodifier statement''' - #ignore the modifiers but add them to the label - modifier = p[1] - obj = p[2] - if hasattr(obj,'Label'): - obj.Label = modifier + obj.Label - p[0] = obj - -def p_part(p): - ''' - part : sphere_action - | cylinder_action - | cube_action - | circle_action - | square_action - | text_action - | polygon_action_nopath - | polygon_action_plus_path - | polyhedron_action - ''' - p[0] = p[1] - -def p_2d_point(p): - '2d_point : OSQUARE NUMBER COMMA NUMBER ESQUARE' - global points_list - if printverbose: print("2d Point") - p[0] = [float(p[2]),float(p[4])] - -def p_points_list_2d(p): - ''' - points_list_2d : 2d_point COMMA - | points_list_2d 2d_point COMMA - | points_list_2d 2d_point - ''' - if p[2] == ',' : - #if printverbose: - # print("Start List") - # print(p[1]) - p[0] = [p[1]] - else : - if printverbose: - print(p[1]) - print(p[2]) - p[1].append(p[2]) - p[0] = p[1] - #if printverbose: print(p[0]) - -def p_3d_point(p): - '3d_point : OSQUARE NUMBER COMMA NUMBER COMMA NUMBER ESQUARE' - global points_list - if printverbose: print("3d point") - p[0] = [p[2],p[4],p[6]] - -def p_points_list_3d(p): - ''' - points_list_3d : 3d_point COMMA - | points_list_3d 3d_point COMMA - | points_list_3d 3d_point - ''' - if p[2] == ',' : - if printverbose: print("Start List") - if printverbose: print(p[1]) - p[0] = [p[1]] - else : - if printverbose: print(p[1]) - if printverbose: print(p[2]) - p[1].append(p[2]) - p[0] = p[1] - if printverbose: print(p[0]) - -def p_path_points(p): - ''' - path_points : NUMBER COMMA - | path_points NUMBER COMMA - | path_points NUMBER - ''' - #if printverbose: print("Path point") - if p[2] == ',' : - #if printverbose: print('Start list') - #if printverbose: print(p[1]) - p[0] = [int(p[1])] - else : - #if printverbose: print(p[1]) - #if printverbose: print(len(p[1])) - #if printverbose: print(p[2]) - p[1].append(int(p[2])) - p[0] = p[1] - #if printverbose: print(p[0]) - - -def p_path_list(p): - 'path_list : OSQUARE path_points ESQUARE' - #if printverbose: print('Path List ') - #if printverbose: print(p[2]) - p[0] = p[2] - -def p_path_set(p) : - ''' - path_set : path_list - | path_set COMMA path_list - ''' - #if printverbose: print('Path Set') - #if printverbose: print(len(p)) - if len(p) == 2 : - p[0] = [p[1]] - else : - p[1].append(p[3]) - p[0] = p[1] - #if printverbose: print(p[0]) - -def p_operation(p): - ''' - operation : difference_action - | intersection_action - | union_action - | rotate_extrude_action - | linear_extrude_with_twist - | rotate_extrude_file - | import_file1 - | surface_action - | projection_action - | hull_action - | minkowski_action - | offset_action - ''' - p[0] = p[1] - -def placeholder(name,children,arguments): - from OpenSCADFeatures import OpenSCADPlaceholder - newobj=doc.addObject("Part::FeaturePython",name) - OpenSCADPlaceholder(newobj,children,str(arguments)) - if gui: - if FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/OpenSCAD").\ - GetBool('useViewProviderTree'): - from OpenSCADFeatures import ViewProviderTree - ViewProviderTree(newobj.ViewObject) - else: - newobj.ViewObject.Proxy = 0 - #don't hide the children - return newobj - -def CGALFeatureObj(name,children,arguments=[]): - myobj=doc.addObject("Part::FeaturePython",name) - CGALFeature(myobj,name,children,str(arguments)) - if gui: - for subobj in children: - subobj.ViewObject.hide() - if FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/OpenSCAD").\ - GetBool('useViewProviderTree'): - from OpenSCADFeatures import ViewProviderTree - ViewProviderTree(myobj.ViewObject) - else: - myobj.ViewObject.Proxy = 0 - return myobj - -def p_offset_action(p): - 'offset_action : offset LPAREN keywordargument_list RPAREN OBRACE block_list EBRACE' - if len(p[6]) == 0: - newobj = placeholder('group',[],'{}') - elif (len(p[6]) == 1 ): #single object - subobj = p[6] - else: - subobj = fuse(p[6],"Offset Union") - if 'r' in p[3] : - offset = float(p[3]['r']) - if 'delta' in p[3] : - offset = float(p[3]['delta']) - if subobj[0].Shape.Volume == 0 : - newobj=doc.addObject("Part::Offset2D",'Offset2D') - newobj.Source = subobj[0] - newobj.Value = offset - if 'r' in p[3] : - newobj.Join = 0 - else : - newobj.Join = 2 - else : - newobj=doc.addObject("Part::Offset",'offset') - newobj.Shape = subobj[0].Shape.makeOffset(offset) - newobj.Document.recompute() - if gui: - subobj[0].ViewObject.hide() -# if FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/OpenSCAD").\ -# GetBool('useViewProviderTree'): -# from OpenSCADFeatures import ViewProviderTree -# ViewProviderTree(newobj.ViewObject) -# else: -# newobj.ViewObject.Proxy = 0 - p[0] = [newobj] - -def p_hull_action(p): - 'hull_action : hull LPAREN RPAREN OBRACE block_list EBRACE' - p[0] = [ CGALFeatureObj(p[1],p[5]) ] - -def p_minkowski_action(p): - ''' - minkowski_action : minkowski LPAREN keywordargument_list RPAREN OBRACE block_list EBRACE''' - p[0] = [ CGALFeatureObj(p[1],p[6],p[3]) ] - -def p_not_supported(p): - ''' - not_supported : glide LPAREN keywordargument_list RPAREN OBRACE block_list EBRACE - | resize LPAREN keywordargument_list RPAREN OBRACE block_list EBRACE - | subdiv LPAREN keywordargument_list RPAREN OBRACE block_list EBRACE - ''' - if gui and not FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/OpenSCAD").\ - GetBool('usePlaceholderForUnsupported'): - from PySide import QtGui - QtGui.QMessageBox.critical(None, translate('OpenSCAD',"Unsupported Function")+" : "+p[1],translate('OpenSCAD',"Press OK")) - else: - p[0] = [placeholder(p[1],p[6],p[3])] - -def p_size_vector(p): - 'size_vector : OSQUARE NUMBER COMMA NUMBER COMMA NUMBER ESQUARE' - if printverbose: print("size vector") - p[0] = [p[2],p[4],p[6]] - -def p_keywordargument(p): - '''keywordargument : ID EQ boolean - | ID EQ NUMBER - | ID EQ size_vector - | ID EQ vector - | ID EQ 2d_point - | text EQ stripped_string - | ID EQ stripped_string - ''' - p[0] = (p[1],p[3]) - if printverbose: print(p[0]) - -def p_keywordargument_list(p): - ''' - keywordargument_list : keywordargument - | keywordargument_list COMMA keywordargument - ''' - if len(p) == 2: - p[0] = {p[1][0] : p[1][1]} - else: - p[1][p[3][0]] = p[3][1] - p[0]=p[1] - -def p_color_action(p): - 'color_action : color LPAREN vector RPAREN OBRACE block_list EBRACE' - import math - if printverbose: print("Color") - color = tuple([float(f) for f in p[3][:3]]) #RGB - transp = 100 - int(math.floor(100*float(p[3][3]))) #Alpha - if gui: - for obj in p[6]: - obj.ViewObject.ShapeColor =color - obj.ViewObject.Transparency = transp - p[0] = p[6] - -# Error rule for syntax errors -def p_error(p): - if printverbose: print("Syntax error in input!") - if printverbose: print(p) - -def fuse(lst,name): - global doc - if printverbose: print("Fuse") - if printverbose: print(lst) - if len(lst) == 0: - myfuse = placeholder('group',[],'{}') - elif len(lst) == 1: - return lst[0] - # Is this Multi Fuse - elif len(lst) > 2: - if printverbose: print("Multi Fuse") - myfuse = doc.addObject('Part::MultiFuse',name) - myfuse.Shapes = lst - if gui: - for subobj in myfuse.Shapes: - subobj.ViewObject.hide() - else: - if printverbose: print("Single Fuse") - myfuse = doc.addObject('Part::Fuse',name) - myfuse.Base = lst[0] - myfuse.Tool = lst[1] - if gui: - myfuse.Base.ViewObject.hide() - myfuse.Tool.ViewObject.hide() - return(myfuse) - -def p_union_action(p): - 'union_action : union LPAREN RPAREN OBRACE block_list EBRACE' - if printverbose: print("union") - newpart = fuse(p[5],p[1]) - if printverbose: print("Push Union Result") - p[0] = [newpart] - if printverbose: print("End Union") - -def p_difference_action(p): - 'difference_action : difference LPAREN RPAREN OBRACE block_list EBRACE' - - if printverbose: print("difference") - if printverbose: print(len(p[5])) - if printverbose: print(p[5]) - if (len(p[5]) == 0 ): #nochild - mycut = placeholder('group',[],'{}') - elif (len(p[5]) == 1 ): #single object - p[0] = p[5] - else: -# Cut using Fuse - mycut = doc.addObject('Part::Cut',p[1]) - mycut.Base = p[5][0] -# Can only Cut two objects do we need to fuse extras - if (len(p[5]) > 2 ): - if printverbose: print("Need to Fuse Extra First") - mycut.Tool = fuse(p[5][1:],'union') - else : - mycut.Tool = p[5][1] - if gui: - mycut.Base.ViewObject.hide() - mycut.Tool.ViewObject.hide() - if printverbose: print("Push Resulting Cut") - p[0] = [mycut] - if printverbose: print("End Cut") - -def p_intersection_action(p): - 'intersection_action : intersection LPAREN RPAREN OBRACE block_list EBRACE' - - if printverbose: print("intersection") - # Is this Multi Common - if (len(p[5]) > 2): - if printverbose: print("Multi Common") - mycommon = doc.addObject('Part::MultiCommon',p[1]) - mycommon.Shapes = p[5] - if gui: - for subobj in mycommon.Shapes: - subobj.ViewObject.hide() - elif (len(p[5]) == 2): - if printverbose: print("Single Common") - mycommon = doc.addObject('Part::Common',p[1]) - mycommon.Base = p[5][0] - mycommon.Tool = p[5][1] - if gui: - mycommon.Base.ViewObject.hide() - mycommon.Tool.ViewObject.hide() - elif (len(p[5]) == 1): - mycommon = p[5][0] - else : # 1 child - mycommon = placeholder('group',[],'{}') - p[0] = [mycommon] - if printverbose: print("End Intersection") - -def process_rotate_extrude(obj,angle): - newobj=doc.addObject("Part::FeaturePython",'RefineRotateExtrude') - RefineShape(newobj,obj) - if gui: - if FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/OpenSCAD").\ - GetBool('useViewProviderTree'): - from OpenSCADFeatures import ViewProviderTree - ViewProviderTree(newobj.ViewObject) - else: - newobj.ViewObject.Proxy = 0 - obj.ViewObject.hide() - myrev = doc.addObject("Part::Revolution","RotateExtrude") - myrev.Source = newobj - myrev.Axis = (0.00,1.00,0.00) - myrev.Base = (0.00,0.00,0.00) - myrev.Angle = angle - myrev.Placement=FreeCAD.Placement(FreeCAD.Vector(),FreeCAD.Rotation(0,0,90)) - if gui: - newobj.ViewObject.hide() - return(myrev) - -def p_rotate_extrude_action(p): - 'rotate_extrude_action : rotate_extrude LPAREN keywordargument_list RPAREN OBRACE block_list EBRACE' - if printverbose: print("Rotate Extrude") - if (len(p[6]) > 1) : - part = fuse(p[6],"Rotate Extrude Union") - else : - part = p[6][0] - angle = float(p[3]['angle']) - p[0] = [process_rotate_extrude(part,angle)] - if printverbose: print("End Rotate Extrude") - -def p_rotate_extrude_file(p): - 'rotate_extrude_file : rotate_extrude LPAREN keywordargument_list RPAREN SEMICOL' - if printverbose: print("Rotate Extrude File") - filen,ext =p[3]['file'] .rsplit('.',1) - obj = process_import_file(filen,ext,p[3]['layer']) - p[0] = [process_rotate_extrude(obj)] - if printverbose: print("End Rotate Extrude File") - -def process_linear_extrude(obj,h) : - #if gui: - newobj=doc.addObject("Part::FeaturePython",'RefineLinearExtrude') - RefineShape(newobj,obj)#mylinear) - if gui: - if FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/OpenSCAD").\ - GetBool('useViewProviderTree'): - from OpenSCADFeatures import ViewProviderTree - ViewProviderTree(newobj.ViewObject) - else: - newobj.ViewObject.Proxy = 0 - obj.ViewObject.hide() - #mylinear.ViewObject.hide() - mylinear = doc.addObject("Part::Extrusion","LinearExtrude") - mylinear.Base = newobj #obj - mylinear.Dir = (0,0,h) - mylinear.Placement=FreeCAD.Placement() - # V17 change to False mylinear.Solid = True - mylinear.Solid = False - if gui: - newobj.ViewObject.hide() - return(mylinear) - -def process_linear_extrude_with_twist(base,height,twist) : - newobj=doc.addObject("Part::FeaturePython",'twist_extrude') - Twist(newobj,base,height,-twist) #base is an FreeCAD Object, height and twist are floats - if gui: - if FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/OpenSCAD").\ - GetBool('useViewProviderTree'): - from OpenSCADFeatures import ViewProviderTree - ViewProviderTree(newobj.ViewObject) - else: - newobj.ViewObject.Proxy = 0 - #import ViewProviderTree from OpenSCADFeatures - #ViewProviderTree(obj.ViewObject) - return(newobj) - -def p_linear_extrude_with_twist(p): - 'linear_extrude_with_twist : linear_extrude LPAREN keywordargument_list RPAREN OBRACE block_list EBRACE' - if printverbose: print("Linear Extrude With Twist") - h = float(p[3]['height']) - if printverbose: print("Twist : ",p[3]) - if 'twist' in p[3]: - t = float(p[3]['twist']) - else: - t = 0 - # Test if null object like from null text - if (len(p[6]) == 0) : - p[0] = [] - return - if (len(p[6]) > 1) : - obj = fuse(p[6],"Linear Extrude Union") - else : - obj = p[6][0] - if t: - newobj = process_linear_extrude_with_twist(obj,h,t) - else: - newobj = process_linear_extrude(obj,h) - if p[3]['center']=='true' : - center(newobj,0,0,h) - p[0] = [newobj] - if printverbose: print("End Linear Extrude with twist") - -def p_import_file1(p): - 'import_file1 : import LPAREN keywordargument_list RPAREN SEMICOL' - if printverbose: print("Import File") - filen,ext =p[3]['file'].rsplit('.',1) - p[0] = [process_import_file(filen,ext,p[3]['layer'])] - if printverbose: print("End Import File") - -def p_surface_action(p): - 'surface_action : surface LPAREN keywordargument_list RPAREN SEMICOL' - if printverbose: print("Surface") - obj = doc.addObject("Part::Feature",'surface') - obj.Shape,xoff,yoff=makeSurfaceVolume(p[3]['file']) - if p[3]['center']=='true' : - center(obj,xoff,yoff,0.0) - p[0] = [obj] - if printverbose: print("End surface") - -def process_import_file(fname,ext,layer): - if printverbose: print("Importing : "+fname+"."+ext+" Layer : "+layer) - if ext.lower() in reverseimporttypes()['Mesh']: - obj=process_mesh_file(fname,ext) - elif ext.lower() == 'dxf' : - obj=processDXF(fname,layer) - else: - raise ValueError("Unsupported file extension %s" % ext) - return(obj) - -def process_mesh_file(fname,ext): - import Mesh,Part - fullname = fname+'.'+ext - filename = os.path.join(pathName,fullname) - objname = os.path.split(fname)[1] - mesh1 = doc.getObject(objname) #reuse imported object - if not mesh1: - Mesh.insert(filename) - mesh1=doc.getObject(objname) - if mesh1 is not None: - if gui: - mesh1.ViewObject.hide() - sh=Part.Shape() - sh.makeShapeFromMesh(mesh1.Mesh.Topology,0.1) - solid = Part.Solid(sh) - obj=doc.addObject('Part::Feature',"Mesh") - #ImportObject(obj,mesh1) #This object is not mutable from the GUI - #ViewProviderTree(obj.ViewObject) - solid=solid.removeSplitter() - if solid.Volume < 0: - #sh.reverse() - #sh = sh.copy() - solid.complement() - obj.Shape=solid#.removeSplitter() - else: #mesh1 is None - FreeCAD.Console.PrintError('Mesh not imported %s.%s %s\n' % \ - (objname,ext,filename)) - import Part - obj=doc.addObject('Part::Feature',"FailedMeshImport") - obj.Shape=Part.Compound([]) - return(obj) - - -def processTextCmd(t): - import os - from OpenSCADUtils import callopenscadstring - tmpfilename = callopenscadstring(t,'dxf') - from OpenSCAD2Dgeom import importDXFface - face = importDXFface(tmpfilename,None,None) - obj=doc.addObject('Part::Feature','text') - obj.Shape=face - try: - os.unlink(tmpfilename) - except OSError: - pass - return(obj) - -def processDXF(fname,layer): - global doc - global pathName - from OpenSCAD2Dgeom import importDXFface - if printverbose: print("Process DXF file") - if printverbose: print("File Name : "+fname) - if printverbose: print("Layer : "+layer) - if printverbose: print("PathName : "+pathName) - dxfname = fname+'.dxf' - filename = os.path.join(pathName,dxfname) - shortname = os.path.split(fname)[1] - if printverbose: print("DXF Full path : "+filename) - face = importDXFface(filename,layer,doc) - obj=doc.addObject('Part::Feature','dxf_%s_%s' % (shortname,layer or "all")) - obj.Shape=face - if printverbose: print("DXF Diagnostics") - if printverbose: print(obj.Shape.ShapeType) - if printverbose: print("Closed : "+str(obj.Shape.isClosed())) - if printverbose: print(obj.Shape.check()) - if printverbose: print([w.isClosed() for w in obj.Shape.Wires]) - return(obj) - -def processSTL(fname): - if printverbose: print("Process STL file") - -def p_multmatrix_action(p): - 'multmatrix_action : multmatrix LPAREN matrix RPAREN OBRACE block_list EBRACE' - if printverbose: print("MultMatrix") - transform_matrix = FreeCAD.Matrix() - if printverbose: print("Multmatrix") - if printverbose: print(p[3]) - m1l=sum(p[3],[]) - if any('x' in me for me in m1l): #hexfloats - m1l=[float.fromhex(me) for me in m1l] - matrixisrounded=False - elif max((len(me) for me in m1l)) >= 14: #might have double precision - m1l=[float(me) for me in m1l] # assume precise output - m1l=[(0 if (abs(me) < 1e-15) else me) for me in m1l] - matrixisrounded=False - else: #trucanted numbers - m1l=[round(float(me),12) for me in m1l] #round - matrixisrounded=True - transform_matrix = FreeCAD.Matrix(*tuple(m1l)) - if printverbose: print(transform_matrix) - if printverbose: print("Apply Multmatrix") -# If more than one object on the stack for multmatrix fuse first - if (len(p[6]) == 0) : - part = placeholder('group',[],'{}') - elif (len(p[6]) > 1) : - part = fuse(p[6],"Matrix Union") - else : - part = p[6][0] - if (isspecialorthogonalpython(fcsubmatrix(transform_matrix))) : - if printverbose: print("special orthogonal") - if matrixisrounded: - if printverbose: print("rotation rounded") - plm=FreeCAD.Placement(transform_matrix) - plm=FreeCAD.Placement(plm.Base,roundrotation(plm.Rotation)) - part.Placement=plm.multiply(part.Placement) - else: - part.Placement=FreeCAD.Placement(transform_matrix).multiply(\ - part.Placement) - new_part = part - elif isrotoinversionpython(fcsubmatrix(transform_matrix)): - if printverbose: print("orthogonal and inversion") - cmat,axisvec = decomposerotoinversion(transform_matrix) - new_part=doc.addObject("Part::Mirroring",'mirr_%s'%part.Name) - new_part.Source=part - new_part.Normal=axisvec - if matrixisrounded: - if printverbose: print("rotation rounded") - plm=FreeCAD.Placement(cmat) - new_part.Placement=FreeCAD.Placement(plm.Base,roundrotation(plm.Rotation)) - else: - new_part.Placement=FreeCAD.Placement(cmat) - new_part.Label="mirrored %s" % part.Label - if gui: - part.ViewObject.hide() - elif FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/OpenSCAD").\ - GetBool('useMultmatrixFeature'): - from OpenSCADFeatures import MatrixTransform - new_part=doc.addObject("Part::FeaturePython",'Matrix Deformation') - MatrixTransform(new_part,transform_matrix,part) - if gui: - if FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/OpenSCAD").\ - GetBool('useViewProviderTree'): - from OpenSCADFeatures import ViewProviderTree - ViewProviderTree(new_part.ViewObject) - else: - new_part.ViewObject.Proxy = 0 - part.ViewObject.hide() - else : - if printverbose: print("Transform Geometry") -# Need to recompute to stop transformGeometry causing a crash - doc.recompute() - new_part = doc.addObject("Part::Feature","Matrix Deformation") - # new_part.Shape = part.Base.Shape.transformGeometry(transform_matrix) - new_part.Shape = part.Shape.transformGeometry(transform_matrix) - if gui: - part.ViewObject.hide() - if False : -# Does not fix problemfile or beltTighener although later is closer - newobj=doc.addObject("Part::FeaturePython",'RefineMultMatrix') - RefineShape(newobj,new_part) - if gui: - newobj.ViewObject.Proxy = 0 - new_part.ViewObject.hide() - p[0] = [newobj] - else : - p[0] = [new_part] - if printverbose: print("Multmatrix applied") - -def p_matrix(p): - 'matrix : OSQUARE vector COMMA vector COMMA vector COMMA vector ESQUARE' - if printverbose: print("Matrix") - p[0] = [p[2],p[4],p[6],p[8]] - -def p_vector(p): - 'vector : OSQUARE NUMBER COMMA NUMBER COMMA NUMBER COMMA NUMBER ESQUARE' - if printverbose: print("Vector") - p[0] = [p[2],p[4],p[6],p[8]] - -def center(obj,x,y,z): - obj.Placement = FreeCAD.Placement(\ - FreeCAD.Vector(-x/2.0,-y/2.0,-z/2.0),\ - FreeCAD.Rotation(0,0,0,1)) - -def p_sphere_action(p): - 'sphere_action : sphere LPAREN keywordargument_list RPAREN SEMICOL' - if printverbose: print("Sphere : ",p[3]) - r = float(p[3]['r']) - mysphere = doc.addObject("Part::Sphere",p[1]) - mysphere.Radius = r - if printverbose: print("Push Sphere") - p[0] = [mysphere] - if printverbose: print("End Sphere") - -def myPolygon(n,r1): - # Adapted from Draft::_Polygon - import math - if printverbose: print("My Polygon") - angle = math.pi*2/n - nodes = [FreeCAD.Vector(r1,0,0)] - for i in range(n-1) : - th = (i+1) * angle - nodes.append(FreeCAD.Vector(r1*math.cos(th),r1*math.sin(th),0)) - nodes.append(nodes[0]) - polygonwire = Part.makePolygon(nodes) - - polygon = doc.addObject("Part::Feature","Polygon") - polygon.Shape = Part.Face(polygonwire) - return(polygon) - -def p_cylinder_action(p): - 'cylinder_action : cylinder LPAREN keywordargument_list RPAREN SEMICOL' - if printverbose: print("Cylinder") - tocenter = p[3]['center'] - h = float(p[3]['h']) - r1 = float(p[3]['r1']) - r2 = float(p[3]['r2']) - #n = int(p[3]['$fn']) - n = int(round(float(p[3]['$fn']))) - fnmax = FreeCAD.ParamGet(\ - "User parameter:BaseApp/Preferences/Mod/OpenSCAD").\ - GetInt('useMaxFN') - if printverbose: print(p[3]) - if h > 0: - if ( r1 == r2 and r1 > 0): - if printverbose: print("Make Cylinder") - if n < 3 or fnmax != 0 and n > fnmax: - mycyl=doc.addObject("Part::Cylinder",p[1]) - mycyl.Height = h - mycyl.Radius = r1 - else : - if printverbose: print("Make Prism") - if False: #user Draft Polygon - mycyl=doc.addObject("Part::Extrusion","prism") - mycyl.Dir = (0,0,h) - try : - import Draft - mycyl.Base = Draft.makePolygon(n,r1,face=True) - except : - # If Draft can't import (probably due to lack of Pivy on Mac and - # Linux builds of FreeCAD), this is a fallback. - # or old level of FreeCAD - if printverbose: print("Draft makePolygon Failed, falling back on manual polygon") - mycyl.Base = myPolygon(n,r1) - # mycyl.Solid = True - - else : - pass - if gui: - mycyl.Base.ViewObject.hide() - else: #Use Part::Prism primitive - mycyl=doc.addObject("Part::Prism","prism") - mycyl.Polygon = n - mycyl.Circumradius = r1 - mycyl.Height = h - - elif (r1 != r2): - if n < 3 or fnmax != 0 and n > fnmax: - if printverbose: print("Make Cone") - mycyl=doc.addObject("Part::Cone",p[1]) - mycyl.Height = h - mycyl.Radius1 = r1 - mycyl.Radius2 = r2 - else: - if printverbose: print("Make Frustum") - mycyl=doc.addObject("Part::FeaturePython",'frustum') - Frustum(mycyl,r1,r2,n,h) - if gui: - if FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/OpenSCAD").\ - GetBool('useViewProviderTree'): - from OpenSCADFeatures import ViewProviderTree - ViewProviderTree(mycyl.ViewObject) - else: - mycyl.ViewObject.Proxy = 0 - else: # r1 == r2 == 0 - FreeCAD.Console.PrintWarning('cylinder with radius zero\n') - mycyl=doc.addObject("Part::Feature","emptycyl") - mycyl.Shape = Part.Compound([]) - else: # h == 0 - FreeCAD.Console.PrintWarning('cylinder with height <= zero\n') - mycyl=doc.addObject("Part::Feature","emptycyl") - mycyl.Shape = Part.Compound([]) - if printverbose: print("Center = ",tocenter) - if tocenter=='true' : - center(mycyl,0,0,h) - if False : -# Does not fix problemfile or beltTighener although later is closer - newobj=doc.addObject("Part::FeaturePython",'RefineCylinder') - RefineShape(newobj,mycyl) - if gui: - if FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/OpenSCAD").\ - GetBool('useViewProviderTree'): - from OpenSCADFeatures import ViewProviderTree - ViewProviderTree(newobj.ViewObject) - else: - newobj.ViewObject.Proxy = 0 - mycyl.ViewObject.hide() - p[0] = [newobj] - else : - p[0] = [mycyl] - if printverbose: print("End Cylinder") - -def p_cube_action(p): - 'cube_action : cube LPAREN keywordargument_list RPAREN SEMICOL' - global doc - l,w,h = [float(str1) for str1 in p[3]['size']] - if (l > 0 and w > 0 and h >0): - if printverbose: print("cube : ",p[3]) - mycube=doc.addObject('Part::Box',p[1]) - mycube.Length=l - mycube.Width=w - mycube.Height=h - else: - FreeCAD.Console.PrintWarning('cube with radius zero\n') - mycube=doc.addObject("Part::Feature","emptycube") - mycube.Shape = Part.Compound([]) - if p[3]['center']=='true' : - center(mycube,l,w,h); - p[0] = [mycube] - if printverbose: print("End Cube") - -def p_circle_action(p) : - 'circle_action : circle LPAREN keywordargument_list RPAREN SEMICOL' - if printverbose: print("Circle : "+str(p[3])) - r = float(p[3]['r']) - # Avoid zero radius - if r == 0 : r = 0.00001 - n = int(p[3]['$fn']) - fnmax = FreeCAD.ParamGet(\ - "User parameter:BaseApp/Preferences/Mod/OpenSCAD").\ - GetInt('useMaxFN',50) - # Alter Max polygon to control if polygons are circles or polygons - # in the modules preferences - import Draft - if n == 0 or fnmax != 0 and n >= fnmax: - mycircle = FreeCAD.ActiveDocument.addObject("Part::Part2DObjectPython",'circle') - Draft._Circle(mycircle) - mycircle.Radius = r - mycircle.MakeFace = True - #mycircle = Draft.makeCircle(r,face=True) # would call doc.recompute - #mycircle = doc.addObject('Part::Circle',p[1]) #would not create a face - #mycircle.Radius = r - else : - #mycircle = Draft.makePolygon(n,r) # would call doc.recompute - mycircle = FreeCAD.ActiveDocument.addObject("Part::Part2DObjectPython",'polygon') - Draft._Polygon(mycircle) - mycircle.FacesNumber = n - mycircle.Radius = r - mycircle.DrawMode = "inscribed" - mycircle.MakeFace = True - if gui: - Draft._ViewProviderDraft(mycircle.ViewObject) - if printverbose: print("Push Circle") - p[0] = [mycircle] - -def p_square_action(p) : - 'square_action : square LPAREN keywordargument_list RPAREN SEMICOL' - if printverbose: print("Square") - size = p[3]['size'] - x = float(size[0]) - y = float(size[1]) - mysquare = doc.addObject('Part::Plane',p[1]) - mysquare.Length=x - mysquare.Width=y - if p[3]['center']=='true' : - center(mysquare,x,y,0) - p[0] = [mysquare] - -def addString(t,s,p): - return(t + ', ' +s+' = "'+p[3][s]+'"') - -def addValue(t,v,p): - return(t + ', ' +v+' = '+p[3][v]) - -def p_text_action(p) : - 'text_action : text LPAREN keywordargument_list RPAREN SEMICOL' - # If text string is null ignore - if p[3]['text'] == "" or p[3]['text'] == " " : - p[0] = [] - return - t = 'text ( text="'+p[3]['text']+'"' - t = addValue(t,'size',p) - t = addString(t,'spacing',p) - t = addString(t,'font',p) - t = addString(t,'direction',p) - t = addString(t,'language',p) - t = addString(t,'script',p) - t = addString(t,'halign',p) - t = addString(t,'valign',p) - t = addValue(t,'$fn',p) - t = addValue(t,'$fa',p) - t = addValue(t,'$fs',p) - t = t+');' - - FreeCAD.Console.PrintMessage("textmsg : "+t+"\n") - p[0] = [processTextCmd(t)] - -def convert_points_list_to_vector(l): - v = [] - for i in l : - if printverbose: print(i) - v.append(FreeCAD.Vector(i[0],i[1])) - if printverbose: print(v) - return(v) - - -def p_polygon_action_nopath(p) : - 'polygon_action_nopath : polygon LPAREN points EQ OSQUARE points_list_2d ESQUARE COMMA paths EQ undef COMMA keywordargument_list RPAREN SEMICOL' - if printverbose: print("Polygon") - if printverbose: print(p[6]) - v = convert_points_list_to_vector(p[6]) - mypolygon = doc.addObject('Part::Feature',p[1]) - if printverbose: print("Make Parts") - # Close Polygon - v.append(v[0]) - parts = Part.makePolygon(v) - if printverbose: print("update object") - mypolygon.Shape = Part.Face(parts) - p[0] = [mypolygon] - -def p_polygon_action_plus_path(p) : - 'polygon_action_plus_path : polygon LPAREN points EQ OSQUARE points_list_2d ESQUARE COMMA paths EQ OSQUARE path_set ESQUARE COMMA keywordargument_list RPAREN SEMICOL' - if printverbose: print("Polygon with Path") - if printverbose: print(p[6]) - v = convert_points_list_to_vector(p[6]) - if printverbose: print("Path Set List") - if printverbose: print(p[12]) - for i in p[12] : - if printverbose: print(i) - mypolygon = doc.addObject('Part::Feature','wire') - path_list = [] - for j in i : - j = int(j) - if printverbose: print(j) - path_list.append(v[j]) -# Close path - path_list.append(v[int(i[0])]) - if printverbose: print('Path List') - if printverbose: print(path_list) - wire = Part.makePolygon(path_list) - mypolygon.Shape = Part.Face(wire) - p[0] = [mypolygon] -# This only pushes last polygon - -def make_face(v1,v2,v3): - wire = Part.makePolygon([v1,v2,v3,v1]) - face = Part.Face(wire) - return face - -def p_polyhedron_action(p) : - '''polyhedron_action : polyhedron LPAREN points EQ OSQUARE points_list_3d ESQUARE COMMA faces EQ OSQUARE path_set ESQUARE COMMA keywordargument_list RPAREN SEMICOL - | polyhedron LPAREN points EQ OSQUARE points_list_3d ESQUARE COMMA triangles EQ OSQUARE points_list_3d ESQUARE COMMA keywordargument_list RPAREN SEMICOL''' - if printverbose: print("Polyhedron Points") - v = [] - for i in p[6] : - if printverbose: print(i) - v.append(FreeCAD.Vector(float(i[0]),float(i[1]),float(i[2]))) - if printverbose: - print(v) - print ("Polyhedron "+p[9]) - print (p[12]) - faces_list = [] - mypolyhed = doc.addObject('Part::Feature',p[1]) - for i in p[12] : - if printverbose: print(i) - v2 = FreeCAD.Vector - pp =[v2(v[k]) for k in i] - # Add first point to end of list to close polygon - pp.append(pp[0]) - print("pp") - print(pp) - w = Part.makePolygon(pp) - print("w") - print(w) - try: - f = Part.Face(w) - except: - secWireList = w.Edges[:] - f = Part.makeFilledFace(Part.__sortEdges__(secWireList)) - #f = make_face(v[int(i[0])],v[int(i[1])],v[int(i[2])]) - faces_list.append(f) - shell=Part.makeShell(faces_list) - solid=Part.Solid(shell).removeSplitter() - if solid.Volume < 0: - solid.reverse() - mypolyhed.Shape=solid - p[0] = [mypolyhed] - -def p_projection_action(p) : - 'projection_action : projection LPAREN keywordargument_list RPAREN OBRACE block_list EBRACE' - if printverbose: print('Projection') - if p[3]['cut']=='true' : - planedim=1e9 # large but finite - #infinite planes look bad in the GUI - planename='xy_plane_used_for_project_cut' - obj=doc.addObject('Part::MultiCommon','projection_cut') - plane = doc.getObject(planename) - if not plane: - plane=doc.addObject("Part::Plane",planename) - plane.Length=planedim*2 - plane.Width=planedim*2 - plane.Placement = FreeCAD.Placement(FreeCAD.Vector(\ - -planedim,-planedim,0),FreeCAD.Rotation()) - if gui: - plane.ViewObject.hide() - if (len(p[6]) > 1): - subobj = [fuse(p[6],"projection_cut_implicit_group")] - else: - subobj = p[6] - obj.Shapes = [plane]+subobj - if gui: - subobj[0].ViewObject.hide() - p[0] = [obj] - else: # cut == 'false' => true projection - if gui and not FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/OpenSCAD").\ - GetBool('usePlaceholderForUnsupported'): - from PySide import QtGui - QtGui.QMessageBox.critical(None, translate('OpenSCAD',"Unsupported Function")+" : "+p[1],translate('OpenSCAD',"Press OK")) - else: - p[0] = [placeholder(p[1],p[6],p[3])] +# -*- coding: utf8 -*- + +#*************************************************************************** +#* * +#* Copyright (c) 2012 Keith Sloan * +#* * +#* This program is free software; you can redistribute it and/or modify * +#* it under the terms of the GNU Lesser General Public License (LGPL) * +#* as published by the Free Software Foundation; either version 2 of * +#* the License, or (at your option) any later version. * +#* for detail see the LICENCE text file. * +#* * +#* This program 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 Library General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#* Acknowledgements : * +#* * +#* Thanks to shoogen on the FreeCAD forum and Peter Li * +#* for programming advice and some code. * +#* * +#* * +#*************************************************************************** +__title__="FreeCAD OpenSCAD Workbench - CSG importer" +__author__ = "Keith Sloan " +__url__ = ["http://www.sloan-home.co.uk/ImportCSG"] + +printverbose = False + +import FreeCAD, io, os, sys +if FreeCAD.GuiUp: + import FreeCADGui + gui = True +else: + if printverbose: print("FreeCAD Gui not present.") + gui = False + + +import ply.lex as lex +import ply.yacc as yacc +import Part + +from OpenSCADFeatures import * +from OpenSCADUtils import * + +params = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/OpenSCAD") +printverbose = params.GetBool('printVerbose',False) + +# Get the token map from the lexer. This is required. +import tokrules +from tokrules import tokens + +try: + _encoding = QtGui.QApplication.UnicodeUTF8 + def translate(context, text): + "convenience function for Qt translator" + from PySide import QtGui + return QtGui.QApplication.translate(context, text, None, _encoding) +except AttributeError: + def translate(context, text): + "convenience function for Qt translator" + from PySide import QtGui + return QtGui.QApplication.translate(context, text, None) + +def open(filename): + "called when freecad opens a file." + global doc + global pathName + docname = os.path.splitext(os.path.basename(filename))[0] + doc = FreeCAD.newDocument(docname) + if filename.lower().endswith('.scad'): + tmpfile=callopenscad(filename) + if workaroundforissue128needed(): + pathName = '' #https://github.com/openscad/openscad/issues/128 + #pathName = os.getcwd() #https://github.com/openscad/openscad/issues/128 + else: + pathName = os.path.dirname(os.path.normpath(filename)) + processcsg(tmpfile) + try: + os.unlink(tmpfile) + except OSError: + pass + else: + pathName = os.path.dirname(os.path.normpath(filename)) + processcsg(filename) + return doc + +def insert(filename,docname): + "called when freecad imports a file" + global doc + global pathName + groupname = os.path.splitext(os.path.basename(filename))[0] + try: + doc=FreeCAD.getDocument(docname) + except NameError: + doc=FreeCAD.newDocument(docname) + #importgroup = doc.addObject("App::DocumentObjectGroup",groupname) + if filename.lower().endswith('.scad'): + tmpfile=callopenscad(filename) + if workaroundforissue128needed(): + pathName = '' #https://github.com/openscad/openscad/issues/128 + #pathName = os.getcwd() #https://github.com/openscad/openscad/issues/128 + else: + pathName = os.path.dirname(os.path.normpath(filename)) + processcsg(tmpfile) + try: + os.unlink(tmpfile) + except OSError: + pass + else: + pathName = os.path.dirname(os.path.normpath(filename)) + processcsg(filename) + +def processcsg(filename): + global doc + + if printverbose: print ('ImportCSG Version 0.6a') + # Build the lexer + if printverbose: print('Start Lex') + lex.lex(module=tokrules) + if printverbose: print('End Lex') + + # Build the parser + if printverbose: print('Load Parser') + # No debug out otherwise Linux has protection exception + parser = yacc.yacc(debug=0) + if printverbose: print('Parser Loaded') + # Give the lexer some input + #f=open('test.scad', 'r') + f = io.open(filename, 'r', encoding="utf8") + #lexer.input(f.read()) + + if printverbose: print('Start Parser') + # Swap statements to enable Parser debugging + #result = parser.parse(f.read(),debug=1) + result = parser.parse(f.read()) + f.close() + if printverbose: + print('End Parser') + print(result) + FreeCAD.Console.PrintMessage('End processing CSG file\n') + doc.recompute() + +def p_block_list_(p): + ''' + block_list : statement + | block_list statement + | statementwithmod + | block_list statementwithmod + ''' + #if printverbose: print("Block List") + #if printverbose: print(p[1]) + if(len(p) > 2) : + if printverbose: print(p[2]) + p[0] = p[1] + p[2] + else : + p[0] = p[1] + #if printverbose: print("End Block List") + +def p_render_action(p): + 'render_action : render LPAREN keywordargument_list RPAREN OBRACE block_list EBRACE' + if printverbose: print("Render (ignored)") + p[0] = p[6] + +def p_group_action1(p): + 'group_action1 : group LPAREN RPAREN OBRACE block_list EBRACE' + if printverbose: print("Group") +# Test if need for implicit fuse + if (len(p[5]) > 1) : + p[0] = [fuse(p[5],"Group")] + else : + p[0] = p[5] + +def p_group_action2(p) : + 'group_action2 : group LPAREN RPAREN SEMICOL' + if printverbose: print("Group2") + p[0] = [] + +def p_boolean(p) : + ''' + boolean : true + | false + ''' + p[0] = p[1] + +#def p_string(p): +# 'string : QUOTE ID QUOTE' +# p[0] = p[2] + +def p_stripped_string(p): + 'stripped_string : STRING' + p[0] = p[1].strip('"') + +def p_statement(p): + '''statement : part + | operation + | multmatrix_action + | group_action1 + | group_action2 + | color_action + | render_action + | not_supported + ''' + p[0] = p[1] + +def p_anymodifier(p): + '''anymodifier : MODIFIERBACK + | MODIFIERDEBUG + | MODIFIERROOT + | MODIFIERDISABLE + ''' + #just return the plain modifier for now + #has to be changed when the modifiers are implemented + #please note that disabled objects usually are stripped of the CSG output during compilation + p[0] = p[1] + +def p_statementwithmod(p): + '''statementwithmod : anymodifier statement''' + #ignore the modifiers but add them to the label + modifier = p[1] + obj = p[2] + if hasattr(obj,'Label'): + obj.Label = modifier + obj.Label + p[0] = obj + +def p_part(p): + ''' + part : sphere_action + | cylinder_action + | cube_action + | circle_action + | square_action + | text_action + | polygon_action_nopath + | polygon_action_plus_path + | polyhedron_action + ''' + p[0] = p[1] + +def p_2d_point(p): + '2d_point : OSQUARE NUMBER COMMA NUMBER ESQUARE' + global points_list + if printverbose: print("2d Point") + p[0] = [float(p[2]),float(p[4])] + +def p_points_list_2d(p): + ''' + points_list_2d : 2d_point COMMA + | points_list_2d 2d_point COMMA + | points_list_2d 2d_point + ''' + if p[2] == ',' : + #if printverbose: + # print("Start List") + # print(p[1]) + p[0] = [p[1]] + else : + if printverbose: + print(p[1]) + print(p[2]) + p[1].append(p[2]) + p[0] = p[1] + #if printverbose: print(p[0]) + +def p_3d_point(p): + '3d_point : OSQUARE NUMBER COMMA NUMBER COMMA NUMBER ESQUARE' + global points_list + if printverbose: print("3d point") + p[0] = [p[2],p[4],p[6]] + +def p_points_list_3d(p): + ''' + points_list_3d : 3d_point COMMA + | points_list_3d 3d_point COMMA + | points_list_3d 3d_point + ''' + if p[2] == ',' : + if printverbose: print("Start List") + if printverbose: print(p[1]) + p[0] = [p[1]] + else : + if printverbose: print(p[1]) + if printverbose: print(p[2]) + p[1].append(p[2]) + p[0] = p[1] + if printverbose: print(p[0]) + +def p_path_points(p): + ''' + path_points : NUMBER COMMA + | path_points NUMBER COMMA + | path_points NUMBER + ''' + #if printverbose: print("Path point") + if p[2] == ',' : + #if printverbose: print('Start list') + #if printverbose: print(p[1]) + p[0] = [int(p[1])] + else : + #if printverbose: print(p[1]) + #if printverbose: print(len(p[1])) + #if printverbose: print(p[2]) + p[1].append(int(p[2])) + p[0] = p[1] + #if printverbose: print(p[0]) + + +def p_path_list(p): + 'path_list : OSQUARE path_points ESQUARE' + #if printverbose: print('Path List ') + #if printverbose: print(p[2]) + p[0] = p[2] + +def p_path_set(p) : + ''' + path_set : path_list + | path_set COMMA path_list + ''' + #if printverbose: print('Path Set') + #if printverbose: print(len(p)) + if len(p) == 2 : + p[0] = [p[1]] + else : + p[1].append(p[3]) + p[0] = p[1] + #if printverbose: print(p[0]) + +def p_operation(p): + ''' + operation : difference_action + | intersection_action + | union_action + | rotate_extrude_action + | linear_extrude_with_twist + | rotate_extrude_file + | import_file1 + | surface_action + | projection_action + | hull_action + | minkowski_action + | offset_action + ''' + p[0] = p[1] + +def placeholder(name,children,arguments): + from OpenSCADFeatures import OpenSCADPlaceholder + newobj=doc.addObject("Part::FeaturePython",name) + OpenSCADPlaceholder(newobj,children,str(arguments)) + if gui: + if FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/OpenSCAD").\ + GetBool('useViewProviderTree'): + from OpenSCADFeatures import ViewProviderTree + ViewProviderTree(newobj.ViewObject) + else: + newobj.ViewObject.Proxy = 0 + #don't hide the children + return newobj + +def CGALFeatureObj(name,children,arguments=[]): + myobj=doc.addObject("Part::FeaturePython",name) + CGALFeature(myobj,name,children,str(arguments)) + if gui: + for subobj in children: + subobj.ViewObject.hide() + if FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/OpenSCAD").\ + GetBool('useViewProviderTree'): + from OpenSCADFeatures import ViewProviderTree + ViewProviderTree(myobj.ViewObject) + else: + myobj.ViewObject.Proxy = 0 + return myobj + +def p_offset_action(p): + 'offset_action : offset LPAREN keywordargument_list RPAREN OBRACE block_list EBRACE' + if len(p[6]) == 0: + newobj = placeholder('group',[],'{}') + elif (len(p[6]) == 1 ): #single object + subobj = p[6] + else: + subobj = fuse(p[6],"Offset Union") + if 'r' in p[3] : + offset = float(p[3]['r']) + if 'delta' in p[3] : + offset = float(p[3]['delta']) + if subobj[0].Shape.Volume == 0 : + newobj=doc.addObject("Part::Offset2D",'Offset2D') + newobj.Source = subobj[0] + newobj.Value = offset + if 'r' in p[3] : + newobj.Join = 0 + else : + newobj.Join = 2 + else : + newobj=doc.addObject("Part::Offset",'offset') + newobj.Shape = subobj[0].Shape.makeOffset(offset) + newobj.Document.recompute() + if gui: + subobj[0].ViewObject.hide() +# if FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/OpenSCAD").\ +# GetBool('useViewProviderTree'): +# from OpenSCADFeatures import ViewProviderTree +# ViewProviderTree(newobj.ViewObject) +# else: +# newobj.ViewObject.Proxy = 0 + p[0] = [newobj] + +def p_hull_action(p): + 'hull_action : hull LPAREN RPAREN OBRACE block_list EBRACE' + p[0] = [ CGALFeatureObj(p[1],p[5]) ] + +def p_minkowski_action(p): + ''' + minkowski_action : minkowski LPAREN keywordargument_list RPAREN OBRACE block_list EBRACE''' + p[0] = [ CGALFeatureObj(p[1],p[6],p[3]) ] + +def p_not_supported(p): + ''' + not_supported : glide LPAREN keywordargument_list RPAREN OBRACE block_list EBRACE + | resize LPAREN keywordargument_list RPAREN OBRACE block_list EBRACE + | subdiv LPAREN keywordargument_list RPAREN OBRACE block_list EBRACE + ''' + if gui and not FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/OpenSCAD").\ + GetBool('usePlaceholderForUnsupported'): + from PySide import QtGui + QtGui.QMessageBox.critical(None, translate('OpenSCAD',"Unsupported Function")+" : "+p[1],translate('OpenSCAD',"Press OK")) + else: + p[0] = [placeholder(p[1],p[6],p[3])] + +def p_size_vector(p): + 'size_vector : OSQUARE NUMBER COMMA NUMBER COMMA NUMBER ESQUARE' + if printverbose: print("size vector") + p[0] = [p[2],p[4],p[6]] + +def p_keywordargument(p): + '''keywordargument : ID EQ boolean + | ID EQ NUMBER + | ID EQ size_vector + | ID EQ vector + | ID EQ 2d_point + | text EQ stripped_string + | ID EQ stripped_string + ''' + p[0] = (p[1],p[3]) + if printverbose: print(p[0]) + +def p_keywordargument_list(p): + ''' + keywordargument_list : keywordargument + | keywordargument_list COMMA keywordargument + ''' + if len(p) == 2: + p[0] = {p[1][0] : p[1][1]} + else: + p[1][p[3][0]] = p[3][1] + p[0]=p[1] + +def p_color_action(p): + 'color_action : color LPAREN vector RPAREN OBRACE block_list EBRACE' + import math + if printverbose: print("Color") + color = tuple([float(f) for f in p[3][:3]]) #RGB + transp = 100 - int(math.floor(100*float(p[3][3]))) #Alpha + if gui: + for obj in p[6]: + obj.ViewObject.ShapeColor =color + obj.ViewObject.Transparency = transp + p[0] = p[6] + +# Error rule for syntax errors +def p_error(p): + if printverbose: print("Syntax error in input!") + if printverbose: print(p) + +def fuse(lst,name): + global doc + if printverbose: print("Fuse") + if printverbose: print(lst) + if len(lst) == 0: + myfuse = placeholder('group',[],'{}') + elif len(lst) == 1: + return lst[0] + # Is this Multi Fuse + elif len(lst) > 2: + if printverbose: print("Multi Fuse") + myfuse = doc.addObject('Part::MultiFuse',name) + myfuse.Shapes = lst + if gui: + for subobj in myfuse.Shapes: + subobj.ViewObject.hide() + else: + if printverbose: print("Single Fuse") + myfuse = doc.addObject('Part::Fuse',name) + myfuse.Base = lst[0] + myfuse.Tool = lst[1] + if gui: + myfuse.Base.ViewObject.hide() + myfuse.Tool.ViewObject.hide() + return(myfuse) + +def p_union_action(p): + 'union_action : union LPAREN RPAREN OBRACE block_list EBRACE' + if printverbose: print("union") + newpart = fuse(p[5],p[1]) + if printverbose: print("Push Union Result") + p[0] = [newpart] + if printverbose: print("End Union") + +def p_difference_action(p): + 'difference_action : difference LPAREN RPAREN OBRACE block_list EBRACE' + + if printverbose: print("difference") + if printverbose: print(len(p[5])) + if printverbose: print(p[5]) + if (len(p[5]) == 0 ): #nochild + mycut = placeholder('group',[],'{}') + elif (len(p[5]) == 1 ): #single object + p[0] = p[5] + else: +# Cut using Fuse + mycut = doc.addObject('Part::Cut',p[1]) + mycut.Base = p[5][0] +# Can only Cut two objects do we need to fuse extras + if (len(p[5]) > 2 ): + if printverbose: print("Need to Fuse Extra First") + mycut.Tool = fuse(p[5][1:],'union') + else : + mycut.Tool = p[5][1] + if gui: + mycut.Base.ViewObject.hide() + mycut.Tool.ViewObject.hide() + if printverbose: print("Push Resulting Cut") + p[0] = [mycut] + if printverbose: print("End Cut") + +def p_intersection_action(p): + 'intersection_action : intersection LPAREN RPAREN OBRACE block_list EBRACE' + + if printverbose: print("intersection") + # Is this Multi Common + if (len(p[5]) > 2): + if printverbose: print("Multi Common") + mycommon = doc.addObject('Part::MultiCommon',p[1]) + mycommon.Shapes = p[5] + if gui: + for subobj in mycommon.Shapes: + subobj.ViewObject.hide() + elif (len(p[5]) == 2): + if printverbose: print("Single Common") + mycommon = doc.addObject('Part::Common',p[1]) + mycommon.Base = p[5][0] + mycommon.Tool = p[5][1] + if gui: + mycommon.Base.ViewObject.hide() + mycommon.Tool.ViewObject.hide() + elif (len(p[5]) == 1): + mycommon = p[5][0] + else : # 1 child + mycommon = placeholder('group',[],'{}') + p[0] = [mycommon] + if printverbose: print("End Intersection") + +def process_rotate_extrude(obj,angle): + newobj=doc.addObject("Part::FeaturePython",'RefineRotateExtrude') + RefineShape(newobj,obj) + if gui: + if FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/OpenSCAD").\ + GetBool('useViewProviderTree'): + from OpenSCADFeatures import ViewProviderTree + ViewProviderTree(newobj.ViewObject) + else: + newobj.ViewObject.Proxy = 0 + obj.ViewObject.hide() + myrev = doc.addObject("Part::Revolution","RotateExtrude") + myrev.Source = newobj + myrev.Axis = (0.00,1.00,0.00) + myrev.Base = (0.00,0.00,0.00) + myrev.Angle = angle + myrev.Placement=FreeCAD.Placement(FreeCAD.Vector(),FreeCAD.Rotation(0,0,90)) + if gui: + newobj.ViewObject.hide() + return(myrev) + +def p_rotate_extrude_action(p): + 'rotate_extrude_action : rotate_extrude LPAREN keywordargument_list RPAREN OBRACE block_list EBRACE' + if printverbose: print("Rotate Extrude") + if (len(p[6]) > 1) : + part = fuse(p[6],"Rotate Extrude Union") + else : + part = p[6][0] + angle = float(p[3]['angle']) + p[0] = [process_rotate_extrude(part,angle)] + if printverbose: print("End Rotate Extrude") + +def p_rotate_extrude_file(p): + 'rotate_extrude_file : rotate_extrude LPAREN keywordargument_list RPAREN SEMICOL' + if printverbose: print("Rotate Extrude File") + filen,ext =p[3]['file'] .rsplit('.',1) + obj = process_import_file(filen,ext,p[3]['layer']) + p[0] = [process_rotate_extrude(obj)] + if printverbose: print("End Rotate Extrude File") + +def process_linear_extrude(obj,h) : + #if gui: + newobj=doc.addObject("Part::FeaturePython",'RefineLinearExtrude') + RefineShape(newobj,obj)#mylinear) + if gui: + if FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/OpenSCAD").\ + GetBool('useViewProviderTree'): + from OpenSCADFeatures import ViewProviderTree + ViewProviderTree(newobj.ViewObject) + else: + newobj.ViewObject.Proxy = 0 + obj.ViewObject.hide() + #mylinear.ViewObject.hide() + mylinear = doc.addObject("Part::Extrusion","LinearExtrude") + mylinear.Base = newobj #obj + mylinear.Dir = (0,0,h) + mylinear.Placement=FreeCAD.Placement() + # V17 change to False mylinear.Solid = True + mylinear.Solid = False + if gui: + newobj.ViewObject.hide() + return(mylinear) + +def process_linear_extrude_with_twist(base,height,twist) : + newobj=doc.addObject("Part::FeaturePython",'twist_extrude') + Twist(newobj,base,height,-twist) #base is an FreeCAD Object, height and twist are floats + if gui: + if FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/OpenSCAD").\ + GetBool('useViewProviderTree'): + from OpenSCADFeatures import ViewProviderTree + ViewProviderTree(newobj.ViewObject) + else: + newobj.ViewObject.Proxy = 0 + #import ViewProviderTree from OpenSCADFeatures + #ViewProviderTree(obj.ViewObject) + return(newobj) + +def p_linear_extrude_with_twist(p): + 'linear_extrude_with_twist : linear_extrude LPAREN keywordargument_list RPAREN OBRACE block_list EBRACE' + if printverbose: print("Linear Extrude With Twist") + h = float(p[3]['height']) + if printverbose: print("Twist : ",p[3]) + if 'twist' in p[3]: + t = float(p[3]['twist']) + else: + t = 0 + # Test if null object like from null text + if (len(p[6]) == 0) : + p[0] = [] + return + if (len(p[6]) > 1) : + obj = fuse(p[6],"Linear Extrude Union") + else : + obj = p[6][0] + if t: + newobj = process_linear_extrude_with_twist(obj,h,t) + else: + newobj = process_linear_extrude(obj,h) + if p[3]['center']=='true' : + center(newobj,0,0,h) + p[0] = [newobj] + if printverbose: print("End Linear Extrude with twist") + +def p_import_file1(p): + 'import_file1 : import LPAREN keywordargument_list RPAREN SEMICOL' + if printverbose: print("Import File") + filen,ext =p[3]['file'].rsplit('.',1) + p[0] = [process_import_file(filen,ext,p[3]['layer'])] + if printverbose: print("End Import File") + +def p_surface_action(p): + 'surface_action : surface LPAREN keywordargument_list RPAREN SEMICOL' + if printverbose: print("Surface") + obj = doc.addObject("Part::Feature",'surface') + obj.Shape,xoff,yoff=makeSurfaceVolume(p[3]['file']) + if p[3]['center']=='true' : + center(obj,xoff,yoff,0.0) + p[0] = [obj] + if printverbose: print("End surface") + +def process_import_file(fname,ext,layer): + if printverbose: print("Importing : "+fname+"."+ext+" Layer : "+layer) + if ext.lower() in reverseimporttypes()['Mesh']: + obj=process_mesh_file(fname,ext) + elif ext.lower() == 'dxf' : + obj=processDXF(fname,layer) + else: + raise ValueError("Unsupported file extension %s" % ext) + return(obj) + +def process_mesh_file(fname,ext): + import Mesh,Part + fullname = fname+'.'+ext + filename = os.path.join(pathName,fullname) + objname = os.path.split(fname)[1] + mesh1 = doc.getObject(objname) #reuse imported object + if not mesh1: + Mesh.insert(filename) + mesh1=doc.getObject(objname) + if mesh1 is not None: + if gui: + mesh1.ViewObject.hide() + sh=Part.Shape() + sh.makeShapeFromMesh(mesh1.Mesh.Topology,0.1) + solid = Part.Solid(sh) + obj=doc.addObject('Part::Feature',"Mesh") + #ImportObject(obj,mesh1) #This object is not mutable from the GUI + #ViewProviderTree(obj.ViewObject) + solid=solid.removeSplitter() + if solid.Volume < 0: + #sh.reverse() + #sh = sh.copy() + solid.complement() + obj.Shape=solid#.removeSplitter() + else: #mesh1 is None + FreeCAD.Console.PrintError('Mesh not imported %s.%s %s\n' % \ + (objname,ext,filename)) + import Part + obj=doc.addObject('Part::Feature',"FailedMeshImport") + obj.Shape=Part.Compound([]) + return(obj) + + +def processTextCmd(t): + import os + from OpenSCADUtils import callopenscadstring + tmpfilename = callopenscadstring(t,'dxf') + from OpenSCAD2Dgeom import importDXFface + face = importDXFface(tmpfilename,None,None) + obj=doc.addObject('Part::Feature','text') + obj.Shape=face + try: + os.unlink(tmpfilename) + except OSError: + pass + return(obj) + +def processDXF(fname,layer): + global doc + global pathName + from OpenSCAD2Dgeom import importDXFface + if printverbose: print("Process DXF file") + if printverbose: print("File Name : "+fname) + if printverbose: print("Layer : "+layer) + if printverbose: print("PathName : "+pathName) + dxfname = fname+'.dxf' + filename = os.path.join(pathName,dxfname) + shortname = os.path.split(fname)[1] + if printverbose: print("DXF Full path : "+filename) + face = importDXFface(filename,layer,doc) + obj=doc.addObject('Part::Feature','dxf_%s_%s' % (shortname,layer or "all")) + obj.Shape=face + if printverbose: print("DXF Diagnostics") + if printverbose: print(obj.Shape.ShapeType) + if printverbose: print("Closed : "+str(obj.Shape.isClosed())) + if printverbose: print(obj.Shape.check()) + if printverbose: print([w.isClosed() for w in obj.Shape.Wires]) + return(obj) + +def processSTL(fname): + if printverbose: print("Process STL file") + +def p_multmatrix_action(p): + 'multmatrix_action : multmatrix LPAREN matrix RPAREN OBRACE block_list EBRACE' + if printverbose: print("MultMatrix") + transform_matrix = FreeCAD.Matrix() + if printverbose: print("Multmatrix") + if printverbose: print(p[3]) + m1l=sum(p[3],[]) + if any('x' in me for me in m1l): #hexfloats + m1l=[float.fromhex(me) for me in m1l] + matrixisrounded=False + elif max((len(me) for me in m1l)) >= 14: #might have double precision + m1l=[float(me) for me in m1l] # assume precise output + m1l=[(0 if (abs(me) < 1e-15) else me) for me in m1l] + matrixisrounded=False + else: #trucanted numbers + m1l=[round(float(me),12) for me in m1l] #round + matrixisrounded=True + transform_matrix = FreeCAD.Matrix(*tuple(m1l)) + if printverbose: print(transform_matrix) + if printverbose: print("Apply Multmatrix") +# If more than one object on the stack for multmatrix fuse first + if (len(p[6]) == 0) : + part = placeholder('group',[],'{}') + elif (len(p[6]) > 1) : + part = fuse(p[6],"Matrix Union") + else : + part = p[6][0] + if (isspecialorthogonalpython(fcsubmatrix(transform_matrix))) : + if printverbose: print("special orthogonal") + if matrixisrounded: + if printverbose: print("rotation rounded") + plm=FreeCAD.Placement(transform_matrix) + plm=FreeCAD.Placement(plm.Base,roundrotation(plm.Rotation)) + part.Placement=plm.multiply(part.Placement) + else: + part.Placement=FreeCAD.Placement(transform_matrix).multiply(\ + part.Placement) + new_part = part + elif isrotoinversionpython(fcsubmatrix(transform_matrix)): + if printverbose: print("orthogonal and inversion") + cmat,axisvec = decomposerotoinversion(transform_matrix) + new_part=doc.addObject("Part::Mirroring",'mirr_%s'%part.Name) + new_part.Source=part + new_part.Normal=axisvec + if matrixisrounded: + if printverbose: print("rotation rounded") + plm=FreeCAD.Placement(cmat) + new_part.Placement=FreeCAD.Placement(plm.Base,roundrotation(plm.Rotation)) + else: + new_part.Placement=FreeCAD.Placement(cmat) + new_part.Label="mirrored %s" % part.Label + if gui: + part.ViewObject.hide() + elif FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/OpenSCAD").\ + GetBool('useMultmatrixFeature'): + from OpenSCADFeatures import MatrixTransform + new_part=doc.addObject("Part::FeaturePython",'Matrix Deformation') + MatrixTransform(new_part,transform_matrix,part) + if gui: + if FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/OpenSCAD").\ + GetBool('useViewProviderTree'): + from OpenSCADFeatures import ViewProviderTree + ViewProviderTree(new_part.ViewObject) + else: + new_part.ViewObject.Proxy = 0 + part.ViewObject.hide() + else : + if printverbose: print("Transform Geometry") +# Need to recompute to stop transformGeometry causing a crash + doc.recompute() + new_part = doc.addObject("Part::Feature","Matrix Deformation") + # new_part.Shape = part.Base.Shape.transformGeometry(transform_matrix) + new_part.Shape = part.Shape.transformGeometry(transform_matrix) + if gui: + part.ViewObject.hide() + if False : +# Does not fix problemfile or beltTighener although later is closer + newobj=doc.addObject("Part::FeaturePython",'RefineMultMatrix') + RefineShape(newobj,new_part) + if gui: + newobj.ViewObject.Proxy = 0 + new_part.ViewObject.hide() + p[0] = [newobj] + else : + p[0] = [new_part] + if printverbose: print("Multmatrix applied") + +def p_matrix(p): + 'matrix : OSQUARE vector COMMA vector COMMA vector COMMA vector ESQUARE' + if printverbose: print("Matrix") + p[0] = [p[2],p[4],p[6],p[8]] + +def p_vector(p): + 'vector : OSQUARE NUMBER COMMA NUMBER COMMA NUMBER COMMA NUMBER ESQUARE' + if printverbose: print("Vector") + p[0] = [p[2],p[4],p[6],p[8]] + +def center(obj,x,y,z): + obj.Placement = FreeCAD.Placement(\ + FreeCAD.Vector(-x/2.0,-y/2.0,-z/2.0),\ + FreeCAD.Rotation(0,0,0,1)) + +def p_sphere_action(p): + 'sphere_action : sphere LPAREN keywordargument_list RPAREN SEMICOL' + if printverbose: print("Sphere : ",p[3]) + r = float(p[3]['r']) + mysphere = doc.addObject("Part::Sphere",p[1]) + mysphere.Radius = r + if printverbose: print("Push Sphere") + p[0] = [mysphere] + if printverbose: print("End Sphere") + +def myPolygon(n,r1): + # Adapted from Draft::_Polygon + import math + if printverbose: print("My Polygon") + angle = math.pi*2/n + nodes = [FreeCAD.Vector(r1,0,0)] + for i in range(n-1) : + th = (i+1) * angle + nodes.append(FreeCAD.Vector(r1*math.cos(th),r1*math.sin(th),0)) + nodes.append(nodes[0]) + polygonwire = Part.makePolygon(nodes) + + polygon = doc.addObject("Part::Feature","Polygon") + polygon.Shape = Part.Face(polygonwire) + return(polygon) + +def p_cylinder_action(p): + 'cylinder_action : cylinder LPAREN keywordargument_list RPAREN SEMICOL' + if printverbose: print("Cylinder") + tocenter = p[3]['center'] + h = float(p[3]['h']) + r1 = float(p[3]['r1']) + r2 = float(p[3]['r2']) + #n = int(p[3]['$fn']) + n = int(round(float(p[3]['$fn']))) + fnmax = FreeCAD.ParamGet(\ + "User parameter:BaseApp/Preferences/Mod/OpenSCAD").\ + GetInt('useMaxFN') + if printverbose: print(p[3]) + if h > 0: + if ( r1 == r2 and r1 > 0): + if printverbose: print("Make Cylinder") + if n < 3 or fnmax != 0 and n > fnmax: + mycyl=doc.addObject("Part::Cylinder",p[1]) + mycyl.Height = h + mycyl.Radius = r1 + else : + if printverbose: print("Make Prism") + if False: #user Draft Polygon + mycyl=doc.addObject("Part::Extrusion","prism") + mycyl.Dir = (0,0,h) + try : + import Draft + mycyl.Base = Draft.makePolygon(n,r1,face=True) + except : + # If Draft can't import (probably due to lack of Pivy on Mac and + # Linux builds of FreeCAD), this is a fallback. + # or old level of FreeCAD + if printverbose: print("Draft makePolygon Failed, falling back on manual polygon") + mycyl.Base = myPolygon(n,r1) + # mycyl.Solid = True + + else : + pass + if gui: + mycyl.Base.ViewObject.hide() + else: #Use Part::Prism primitive + mycyl=doc.addObject("Part::Prism","prism") + mycyl.Polygon = n + mycyl.Circumradius = r1 + mycyl.Height = h + + elif (r1 != r2): + if n < 3 or fnmax != 0 and n > fnmax: + if printverbose: print("Make Cone") + mycyl=doc.addObject("Part::Cone",p[1]) + mycyl.Height = h + mycyl.Radius1 = r1 + mycyl.Radius2 = r2 + else: + if printverbose: print("Make Frustum") + mycyl=doc.addObject("Part::FeaturePython",'frustum') + Frustum(mycyl,r1,r2,n,h) + if gui: + if FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/OpenSCAD").\ + GetBool('useViewProviderTree'): + from OpenSCADFeatures import ViewProviderTree + ViewProviderTree(mycyl.ViewObject) + else: + mycyl.ViewObject.Proxy = 0 + else: # r1 == r2 == 0 + FreeCAD.Console.PrintWarning('cylinder with radius zero\n') + mycyl=doc.addObject("Part::Feature","emptycyl") + mycyl.Shape = Part.Compound([]) + else: # h == 0 + FreeCAD.Console.PrintWarning('cylinder with height <= zero\n') + mycyl=doc.addObject("Part::Feature","emptycyl") + mycyl.Shape = Part.Compound([]) + if printverbose: print("Center = ",tocenter) + if tocenter=='true' : + center(mycyl,0,0,h) + if False : +# Does not fix problemfile or beltTighener although later is closer + newobj=doc.addObject("Part::FeaturePython",'RefineCylinder') + RefineShape(newobj,mycyl) + if gui: + if FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/OpenSCAD").\ + GetBool('useViewProviderTree'): + from OpenSCADFeatures import ViewProviderTree + ViewProviderTree(newobj.ViewObject) + else: + newobj.ViewObject.Proxy = 0 + mycyl.ViewObject.hide() + p[0] = [newobj] + else : + p[0] = [mycyl] + if printverbose: print("End Cylinder") + +def p_cube_action(p): + 'cube_action : cube LPAREN keywordargument_list RPAREN SEMICOL' + global doc + l,w,h = [float(str1) for str1 in p[3]['size']] + if (l > 0 and w > 0 and h >0): + if printverbose: print("cube : ",p[3]) + mycube=doc.addObject('Part::Box',p[1]) + mycube.Length=l + mycube.Width=w + mycube.Height=h + else: + FreeCAD.Console.PrintWarning('cube with radius zero\n') + mycube=doc.addObject("Part::Feature","emptycube") + mycube.Shape = Part.Compound([]) + if p[3]['center']=='true' : + center(mycube,l,w,h); + p[0] = [mycube] + if printverbose: print("End Cube") + +def p_circle_action(p) : + 'circle_action : circle LPAREN keywordargument_list RPAREN SEMICOL' + if printverbose: print("Circle : "+str(p[3])) + r = float(p[3]['r']) + # Avoid zero radius + if r == 0 : r = 0.00001 + n = int(p[3]['$fn']) + fnmax = FreeCAD.ParamGet(\ + "User parameter:BaseApp/Preferences/Mod/OpenSCAD").\ + GetInt('useMaxFN',50) + # Alter Max polygon to control if polygons are circles or polygons + # in the modules preferences + import Draft + if n == 0 or fnmax != 0 and n >= fnmax: + mycircle = FreeCAD.ActiveDocument.addObject("Part::Part2DObjectPython",'circle') + Draft._Circle(mycircle) + mycircle.Radius = r + mycircle.MakeFace = True + #mycircle = Draft.makeCircle(r,face=True) # would call doc.recompute + #mycircle = doc.addObject('Part::Circle',p[1]) #would not create a face + #mycircle.Radius = r + else : + #mycircle = Draft.makePolygon(n,r) # would call doc.recompute + mycircle = FreeCAD.ActiveDocument.addObject("Part::Part2DObjectPython",'polygon') + Draft._Polygon(mycircle) + mycircle.FacesNumber = n + mycircle.Radius = r + mycircle.DrawMode = "inscribed" + mycircle.MakeFace = True + if gui: + Draft._ViewProviderDraft(mycircle.ViewObject) + if printverbose: print("Push Circle") + p[0] = [mycircle] + +def p_square_action(p) : + 'square_action : square LPAREN keywordargument_list RPAREN SEMICOL' + if printverbose: print("Square") + size = p[3]['size'] + x = float(size[0]) + y = float(size[1]) + mysquare = doc.addObject('Part::Plane',p[1]) + mysquare.Length=x + mysquare.Width=y + if p[3]['center']=='true' : + center(mysquare,x,y,0) + p[0] = [mysquare] + +def addString(t,s,p): + return(t + ', ' +s+' = "'+p[3][s]+'"') + +def addValue(t,v,p): + return(t + ', ' +v+' = '+p[3][v]) + +def p_text_action(p) : + 'text_action : text LPAREN keywordargument_list RPAREN SEMICOL' + # If text string is null ignore + if p[3]['text'] == "" or p[3]['text'] == " " : + p[0] = [] + return + t = 'text ( text="'+p[3]['text']+'"' + t = addValue(t,'size',p) + t = addString(t,'spacing',p) + t = addString(t,'font',p) + t = addString(t,'direction',p) + t = addString(t,'language',p) + t = addString(t,'script',p) + t = addString(t,'halign',p) + t = addString(t,'valign',p) + t = addValue(t,'$fn',p) + t = addValue(t,'$fa',p) + t = addValue(t,'$fs',p) + t = t+');' + + FreeCAD.Console.PrintMessage("textmsg : "+t+"\n") + p[0] = [processTextCmd(t)] + +def convert_points_list_to_vector(l): + v = [] + for i in l : + if printverbose: print(i) + v.append(FreeCAD.Vector(i[0],i[1])) + if printverbose: print(v) + return(v) + + +def p_polygon_action_nopath(p) : + 'polygon_action_nopath : polygon LPAREN points EQ OSQUARE points_list_2d ESQUARE COMMA paths EQ undef COMMA keywordargument_list RPAREN SEMICOL' + if printverbose: print("Polygon") + if printverbose: print(p[6]) + v = convert_points_list_to_vector(p[6]) + mypolygon = doc.addObject('Part::Feature',p[1]) + if printverbose: print("Make Parts") + # Close Polygon + v.append(v[0]) + parts = Part.makePolygon(v) + if printverbose: print("update object") + mypolygon.Shape = Part.Face(parts) + p[0] = [mypolygon] + +def p_polygon_action_plus_path(p) : + 'polygon_action_plus_path : polygon LPAREN points EQ OSQUARE points_list_2d ESQUARE COMMA paths EQ OSQUARE path_set ESQUARE COMMA keywordargument_list RPAREN SEMICOL' + if printverbose: print("Polygon with Path") + if printverbose: print(p[6]) + v = convert_points_list_to_vector(p[6]) + if printverbose: print("Path Set List") + if printverbose: print(p[12]) + for i in p[12] : + if printverbose: print(i) + mypolygon = doc.addObject('Part::Feature','wire') + path_list = [] + for j in i : + j = int(j) + if printverbose: print(j) + path_list.append(v[j]) +# Close path + path_list.append(v[int(i[0])]) + if printverbose: print('Path List') + if printverbose: print(path_list) + wire = Part.makePolygon(path_list) + mypolygon.Shape = Part.Face(wire) + p[0] = [mypolygon] +# This only pushes last polygon + +def make_face(v1,v2,v3): + wire = Part.makePolygon([v1,v2,v3,v1]) + face = Part.Face(wire) + return face + +def p_polyhedron_action(p) : + '''polyhedron_action : polyhedron LPAREN points EQ OSQUARE points_list_3d ESQUARE COMMA faces EQ OSQUARE path_set ESQUARE COMMA keywordargument_list RPAREN SEMICOL + | polyhedron LPAREN points EQ OSQUARE points_list_3d ESQUARE COMMA triangles EQ OSQUARE points_list_3d ESQUARE COMMA keywordargument_list RPAREN SEMICOL''' + if printverbose: print("Polyhedron Points") + v = [] + for i in p[6] : + if printverbose: print(i) + v.append(FreeCAD.Vector(float(i[0]),float(i[1]),float(i[2]))) + if printverbose: + print(v) + print ("Polyhedron "+p[9]) + print (p[12]) + faces_list = [] + mypolyhed = doc.addObject('Part::Feature',p[1]) + for i in p[12] : + if printverbose: print(i) + v2 = FreeCAD.Vector + pp =[v2(v[k]) for k in i] + # Add first point to end of list to close polygon + pp.append(pp[0]) + print("pp") + print(pp) + w = Part.makePolygon(pp) + print("w") + print(w) + try: + f = Part.Face(w) + except: + secWireList = w.Edges[:] + f = Part.makeFilledFace(Part.__sortEdges__(secWireList)) + #f = make_face(v[int(i[0])],v[int(i[1])],v[int(i[2])]) + faces_list.append(f) + shell=Part.makeShell(faces_list) + solid=Part.Solid(shell).removeSplitter() + if solid.Volume < 0: + solid.reverse() + mypolyhed.Shape=solid + p[0] = [mypolyhed] + +def p_projection_action(p) : + 'projection_action : projection LPAREN keywordargument_list RPAREN OBRACE block_list EBRACE' + if printverbose: print('Projection') + if p[3]['cut']=='true' : + planedim=1e9 # large but finite + #infinite planes look bad in the GUI + planename='xy_plane_used_for_project_cut' + obj=doc.addObject('Part::MultiCommon','projection_cut') + plane = doc.getObject(planename) + if not plane: + plane=doc.addObject("Part::Plane",planename) + plane.Length=planedim*2 + plane.Width=planedim*2 + plane.Placement = FreeCAD.Placement(FreeCAD.Vector(\ + -planedim,-planedim,0),FreeCAD.Rotation()) + if gui: + plane.ViewObject.hide() + if (len(p[6]) > 1): + subobj = [fuse(p[6],"projection_cut_implicit_group")] + else: + subobj = p[6] + obj.Shapes = [plane]+subobj + if gui: + subobj[0].ViewObject.hide() + p[0] = [obj] + else: # cut == 'false' => true projection + if gui and not FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/OpenSCAD").\ + GetBool('usePlaceholderForUnsupported'): + from PySide import QtGui + QtGui.QMessageBox.critical(None, translate('OpenSCAD',"Unsupported Function")+" : "+p[1],translate('OpenSCAD',"Press OK")) + else: + p[0] = [placeholder(p[1],p[6],p[3])] diff --git a/src/Mod/Test/UnitTests.py b/src/Mod/Test/UnitTests.py index 71211cbd79..48b1b9ef75 100644 --- a/src/Mod/Test/UnitTests.py +++ b/src/Mod/Test/UnitTests.py @@ -87,6 +87,38 @@ class UnitBasicCases(unittest.TestCase): v = FreeCAD.Units.parseQuantity(t[0]).getValueAs("ksi") self.assertAlmostEqual(1, v.Value, msg="Failed with \"{0}\" scheme: {1} != 1 (delta: {2})".format(schemes[i], v.Value, self.delta), delta=self.delta) + def testSchemeTranslation(self): + quantities = [] + for i in dir(FreeCAD.Units): + if issubclass(type(getattr(FreeCAD.Units, i)), FreeCAD.Units.Quantity): + quantities.append(i) + + schemes = FreeCAD.Units.listSchemas() + for i in quantities: + q1 = getattr(FreeCAD.Units, i) + q1 = FreeCAD.Units.Quantity(q1) + q1.Format = {'Precision': 16} + for idx, val in enumerate(schemes): + t = FreeCAD.Units.schemaTranslate(q1, idx) + try: + q2 = FreeCAD.Units.Quantity(t[0]) + if math.fabs(q1.Value - q2.Value) > 0.01: + print (q1, " : ", q2, " : ", t, " : ", i, " : ", val) + except Exception as e: + print ("{}: {}".format(str(e), t[0])) + + def testVoltage(self): + q1 = FreeCAD.Units.Quantity("1e20 V") + t = FreeCAD.Units.schemaTranslate(q1, 0) # Standard + q2 = FreeCAD.Units.Quantity(t[0]) + self.assertAlmostEqual(q1.Value, q2.Value, delta=self.delta) + + def testEnergy(self): + q1 = FreeCAD.Units.Quantity("1e20 J") + t = FreeCAD.Units.schemaTranslate(q1, 0) # Standard + q2 = FreeCAD.Units.Quantity(t[0]) + self.assertAlmostEqual(q1.Value, q2.Value, delta=self.delta) + def testTrigonometric(self): #tu=FreeCAD.Units.translateUnit self.failUnless(compare(tu('sin(pi)'), math.sin(math.pi))) diff --git a/src/Mod/mod.dox b/src/Mod/mod.dox index cb73c3d003..6fbe3cede1 100644 --- a/src/Mod/mod.dox +++ b/src/Mod/mod.dox @@ -1,30 +1,30 @@ -/** \addtogroup WORKBENCHES - Most of FreeCAD's functionality is defined in dedicated Workbenches - - Those plugins, also called \b modules or \b workbenches, provide - functionality for specialized facets of FreeCAD. The word \b module - refers to any new group of tools, while \b workbench designates - specifically a GUI group of tools in the FreeCAD interface. All - workbenches are defined in modules, but not all modules contain a - workbench. Practically, though, all the main modules define a - workbench with the same name, so the terms are almost interchangeable. - - Some of these modules are programmed in C++, others in Python, and some - in a mix of C++ and Python. - - */ - - /** \defgroup CWORKBENCHES C++ workbenches - * \ingroup WORKBENCHES - * \brief These workbenches are programmed primarily in C++, but most provide a Python API as well. -*/ - - /** \defgroup PYTHONWORKBENCHES Python workbenches - * \ingroup WORKBENCHES - * \brief Those are workbenches programmed primarily in Python -*/ - - /** \defgroup UTILITIES Utility modules - * \ingroup WORKBENCHES - * \brief Modules that provide utility tools to FreeCAD but don't define a workbench -*/ +/** \addtogroup WORKBENCHES + Most of FreeCAD's functionality is defined in dedicated Workbenches + + Those plugins, also called \b modules or \b workbenches, provide + functionality for specialized facets of FreeCAD. The word \b module + refers to any new group of tools, while \b workbench designates + specifically a GUI group of tools in the FreeCAD interface. All + workbenches are defined in modules, but not all modules contain a + workbench. Practically, though, all the main modules define a + workbench with the same name, so the terms are almost interchangeable. + + Some of these modules are programmed in C++, others in Python, and some + in a mix of C++ and Python. + + */ + + /** \defgroup CWORKBENCHES C++ workbenches + * \ingroup WORKBENCHES + * \brief These workbenches are programmed primarily in C++, but most provide a Python API as well. +*/ + + /** \defgroup PYTHONWORKBENCHES Python workbenches + * \ingroup WORKBENCHES + * \brief Those are workbenches programmed primarily in Python +*/ + + /** \defgroup UTILITIES Utility modules + * \ingroup WORKBENCHES + * \brief Modules that provide utility tools to FreeCAD but don't define a workbench +*/ diff --git a/src/Tools/generateTemplates/templateClassPyExport.py b/src/Tools/generateTemplates/templateClassPyExport.py index bc845daf21..b8934f0bdd 100644 --- a/src/Tools/generateTemplates/templateClassPyExport.py +++ b/src/Tools/generateTemplates/templateClassPyExport.py @@ -101,14 +101,26 @@ public: + if i.Keyword: /// callback for the @i.Name@() method static PyObject * staticCallback_@i.Name@ (PyObject *self, PyObject *args, PyObject *kwd); -+ if not i.Static and not i.Class: ++ if i.Static: + /// implementer for the @i.Name@() method + static PyObject* @i.Name@(PyObject *args, PyObject *kwd); += elif i.Class: + /// implementer for the @i.Name@() method + static PyObject* @i.Name@(PyObject *self, PyObject *args, PyObject *kwd); += else: /// implementer for the @i.Name@() method PyObject* @i.Name@(PyObject *args, PyObject *kwd); - = else: /// callback for the @i.Name@() method static PyObject * staticCallback_@i.Name@ (PyObject *self, PyObject *args); -+ if not i.Static and not i.Class: ++ if i.Static: + /// implementer for the @i.Name@() method + static PyObject* @i.Name@(PyObject *args); += elif i.Class: + /// implementer for the @i.Name@() method + static PyObject* @i.Name@(PyObject *self, PyObject *args); += else: /// implementer for the @i.Name@() method PyObject* @i.Name@(PyObject *args); - @@ -533,13 +545,13 @@ PyGetSetDef @self.export.Name@::GetterSetter[] = { // @i.Name@() callback and implementer // PyObject* @self.export.Name@::@i.Name@(PyObject *args){}; // has to be implemented in @self.export.Name@Imp.cpp -+ if not i.Static and not i.Class: + if i.Keyword: PyObject * @self.export.Name@::staticCallback_@i.Name@ (PyObject *self, PyObject *args, PyObject * kwd) = else: PyObject * @self.export.Name@::staticCallback_@i.Name@ (PyObject *self, PyObject *args) - { ++ if not i.Static and not i.Class: // make sure that not a null pointer is passed if (!self) { PyErr_SetString(PyExc_TypeError, "descriptor '@i.Name@' of '@self.export.Namespace@.@self.export.Twin@' object needs an argument"); @@ -560,15 +572,32 @@ PyObject * @self.export.Name@::staticCallback_@i.Name@ (PyObject *self, PyObject } - +- try { // catches all exceptions coming up from c++ and generate a python exception + if i.Keyword: ++ if i.Static: + (void)self; + PyObject* ret = @self.export.Name@::@i.Name@(args, kwd); += elif i.Class: + PyObject* ret = @self.export.Name@::@i.Name@(self, args, kwd); += else: PyObject* ret = static_cast<@self.export.Name@*>(self)->@i.Name@(args, kwd); +- += else: ++ if i.Static: + (void)self; + PyObject* ret = @self.export.Name@::@i.Name@(args); += elif i.Class: + PyObject* ret = @self.export.Name@::@i.Name@(self, args); = else: PyObject* ret = static_cast<@self.export.Name@*>(self)->@i.Name@(args); - +- ++ if not i.Static and not i.Class: + if (not i.Const): if (ret != 0) static_cast<@self.export.Name@*>(self)->startNotify(); +- - return ret; } // Please sync the following catch implementation with PY_CATCH @@ -611,7 +640,6 @@ PyObject * @self.export.Name@::staticCallback_@i.Name@ (PyObject *self, PyObject #endif } -- - + for i in self.export.Attribute: // @i.Name@() callback and implementer @@ -894,18 +922,24 @@ std::string @self.export.Name@::representation(void) const } + for i in self.export.Methode: -+ if not i.Static and not i.Class: + if i.Keyword: ++ if i.Class: +PyObject* @self.export.Name@::@i.Name@(PyObject *self, PyObject *args, PyObject *kwds) += else: PyObject* @self.export.Name@::@i.Name@(PyObject *args, PyObject *kwds) +- += else: ++ if i.Class: +PyObject* @self.export.Name@::@i.Name@(PyObject *self, PyObject *args) = else: PyObject* @self.export.Name@::@i.Name@(PyObject *args) - +- { PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented"); return 0; } - -- + if (self.export.NumberProtocol): PyObject* @self.export.Name@::number_add_handler(PyObject* /*self*/, PyObject* /*other*/) @@ -1213,18 +1247,24 @@ int @self.export.Name@::finalization() + for i in self.export.Methode: -+ if not i.Static and not i.Class: + if i.Keyword: ++ if i.Class: +PyObject* @self.export.Name@::@i.Name@(PyObject * /*self*/, PyObject * /*args*/, PyObject * /*kwds*/) += else: PyObject* @self.export.Name@::@i.Name@(PyObject * /*args*/, PyObject * /*kwds*/) +- += else: ++ if i.Class: +PyObject* @self.export.Name@::@i.Name@(PyObject * /*self*/, PyObject * /*args*/) = else: PyObject* @self.export.Name@::@i.Name@(PyObject * /*args*/) - +- { PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented"); return 0; } - -- + if (self.export.NumberProtocol): PyObject* @self.export.Name@::number_add_handler(PyObject *self, PyObject *other)