From aabad9fd3b7ab6713fe27af3a213eac73c54bc75 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=B4me?= Date: Mon, 16 Nov 2020 15:48:46 +0100 Subject: [PATCH] Add Documentation and unit test --- src/FeaturesPlugin/CMakeLists.txt | 1 + .../FeaturesPlugin_GeometryCalculation.h | 2 +- .../Test/TestBasicProperties.py | 80 ++++++++++++++++++ src/FeaturesPlugin/doc/FeaturesPlugin.rst | 1 + .../doc/geometryCalculationFeature.rst | 28 ++++++ .../images/basicPropertiesPropertyPanel.png | Bin 0 -> 11752 bytes .../doc/images/basicproperties.png | Bin 0 -> 809 bytes src/FeaturesPlugin/plugin-Features.xml | 2 +- 8 files changed, 112 insertions(+), 2 deletions(-) create mode 100644 src/FeaturesPlugin/Test/TestBasicProperties.py create mode 100644 src/FeaturesPlugin/doc/geometryCalculationFeature.rst create mode 100644 src/FeaturesPlugin/doc/images/basicPropertiesPropertyPanel.png create mode 100644 src/FeaturesPlugin/doc/images/basicproperties.png diff --git a/src/FeaturesPlugin/CMakeLists.txt b/src/FeaturesPlugin/CMakeLists.txt index 8d7002a61..ab56bb256 100644 --- a/src/FeaturesPlugin/CMakeLists.txt +++ b/src/FeaturesPlugin/CMakeLists.txt @@ -701,4 +701,5 @@ ADD_UNIT_TESTS(TestExtrusion.py TestFillet1D_Wire_3.py TestFillet1D_Wire_4.py TestFillet1D_Wire_5.py + TestBasicProperties.py ) diff --git a/src/FeaturesPlugin/FeaturesPlugin_GeometryCalculation.h b/src/FeaturesPlugin/FeaturesPlugin_GeometryCalculation.h index df95636d1..a41e85365 100644 --- a/src/FeaturesPlugin/FeaturesPlugin_GeometryCalculation.h +++ b/src/FeaturesPlugin/FeaturesPlugin_GeometryCalculation.h @@ -91,7 +91,7 @@ public: FEATURESPLUGIN_EXPORT virtual void attributeChanged(const std::string& theID); /// Reimplemented from ModelAPI_Feature::isMacro(). Returns true. - virtual bool isMacro() const { return true; } + FEATURESPLUGIN_EXPORT virtual bool isMacro() const { return true; } /// Use plugin manager for features creation FeaturesPlugin_GeometryCalculation(); diff --git a/src/FeaturesPlugin/Test/TestBasicProperties.py b/src/FeaturesPlugin/Test/TestBasicProperties.py new file mode 100644 index 000000000..2604c9ac3 --- /dev/null +++ b/src/FeaturesPlugin/Test/TestBasicProperties.py @@ -0,0 +1,80 @@ +# Copyright (C) 2014-2020 CEA/DEN, EDF R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 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 +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# + +""" + Unit test of ... +""" +#========================================================================= +# Initialization of the test +#========================================================================= + +import salome + +import os +import math + +from ModelAPI import * +from salome.shaper import model + + + +__updated__ = "2020-11-12" + + +#========================================================================= +# test basic properties +#========================================================================= +def test_Basic_properties(): + + model.begin() + file_path = os.path.join(os.getenv("DATA_DIR"),"Shapes","Brep","box1.brep") + partSet = model.moduleDocument() + Part_1 = model.addPart(partSet) + Part_1_doc = Part_1.document() + Import_1 = model.addImport(Part_1_doc,file_path) + model.do() + + myDelta = 1e-6 + Props = model.getBasicProperties(Part_1_doc,model.selection("SOLID", "box1_1")) + + print(" Basic Properties:") + print(" Wires length: ", Props[0]) + print(" Surface area: ", Props[1]) + print(" Volume : ", Props[2]) + + aReflength = 2400 + aReslength = Props[0] + assert (math.fabs(aReslength - aReflength) < myDelta), "The surface is wrong: expected = {0}, real = {1}".format(aReflength, aReslength) + + aRefSurface = 240000 + aResSurface = Props[1] + assert (math.fabs(aResSurface - aRefSurface) < myDelta), "The surface is wrong: expected = {0}, real = {1}".format(aRefSurface, aResSurface) + + aRefVolume = 8000000 + aResVolume = Props[2] + assert (math.fabs(aResVolume - aRefVolume) < myDelta), "The volume is wrong: expected = {0}, real = {1}".format(aRefVolume, aResVolume) + + +if __name__ == '__main__': + + test_Basic_properties() + + #========================================================================= + # End of test + #========================================================================= diff --git a/src/FeaturesPlugin/doc/FeaturesPlugin.rst b/src/FeaturesPlugin/doc/FeaturesPlugin.rst index fb8e2a344..cb35ea50a 100644 --- a/src/FeaturesPlugin/doc/FeaturesPlugin.rst +++ b/src/FeaturesPlugin/doc/FeaturesPlugin.rst @@ -24,6 +24,7 @@ Features plug-in provides a set of common topological operations. It implements importResultFeature.rst linearCopyFeature.rst measurementFeature.rst + geometryCalculationFeature.rst pipeFeature.rst placementFeature.rst recoverFeature.rst diff --git a/src/FeaturesPlugin/doc/geometryCalculationFeature.rst b/src/FeaturesPlugin/doc/geometryCalculationFeature.rst new file mode 100644 index 000000000..a90d5bc8b --- /dev/null +++ b/src/FeaturesPlugin/doc/geometryCalculationFeature.rst @@ -0,0 +1,28 @@ +.. |basicproperties.icon| image:: images/basicproperties.png + +Geometry calculation +==================== + +The **Geometry calculation** feature displays basic properties of sub-elements of a geometrical object (shape). + +The basic properties displayed in the property panel are lenght, area and volume. + +**Apply** button does not generate any result and has the same effect as **Cancel** for this feature. + +To display basic properties in the active part: + +#. select in the Main Menu *Inspection - > Geometry calculation* item or +#. click |basicproperties.icon| **Geometry calculation** button in the toolbar + +The basic properties can be displayed for a selected object in the property panel : + +.. figure:: images/basicPropertiesPropertyPanel.png + :align: center + + Geometry calculation + +Input fields: + +- **Object** contains an object selected in 3D OCC viewer or object browser. + +The basic properties displayed can be selected. diff --git a/src/FeaturesPlugin/doc/images/basicPropertiesPropertyPanel.png b/src/FeaturesPlugin/doc/images/basicPropertiesPropertyPanel.png new file mode 100644 index 0000000000000000000000000000000000000000..17f8cd7ef35a4e3ef73b80f05ccea19b367dafcf GIT binary patch literal 11752 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 literal 0 HcmV?d00001 diff --git a/src/FeaturesPlugin/doc/images/basicproperties.png b/src/FeaturesPlugin/doc/images/basicproperties.png new file mode 100644 index 0000000000000000000000000000000000000000..f46c0da7a378a05f515f1b3583cec1a34526ddd7 GIT binary patch literal 809 zcmV+^1J?YBP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;pGibPRCwBA{Qv(y12q9a0I?u*7#SH;fs`8oJ&%BR z7ZC46mjF2qAb`LG3|&mZjg z<(tp{|NZ;-|NO-(-}w3Y_W;#9A{z=a10aA{&|J;*=N|(@dTBRYU|L5hLskWZUyvTn zz|YUapr)?Lxq0g@3wKwCs_#GmlsW~(|3GR00tnrOo4)@1|Nq?=O#I>N|NlqMKKTFT z*Z=?Tzy1IJ@%!)p+ji~y2n_cwpgtZ@6oAYC2q1J9GW`C_z))1v&Ct}|8*B3c&9Mf0Rum}x3xojzh!Hv20Bzd@3?|>NKOpXBVnEO! z@a_9ghL>+Y0O=nLTpa8Sa*})uN|HS1fd*y+rLO|b`UDU_7%uz;bYXof#AOv_r3@Wi z2v>sm3l=Vd^V@*F02;;&B=~`t4I~B-Ko~B(|K`8%hc7^v0fm_u5i~jgiHiU|EHBJ> z8OW^yMGVlaR{#OTge?pwPUvR%{u@G1p4bhhzy4xCp+Vw5|DdL85CITC7%sf}{J-yu zcf@5g2_XgsZArKbPXf()4G=(BV|npxM7V_{lrpSYfEwE{v4WCP3`+n42*ZV^AO81! z_zE-J{$VLY7CouAD z152)jgf$EgukS$-v+{=+a%^J{iWo>OIsgbD^e}vS@56tor*E;x zDigc}fB

1_mVo#*aW|3@i)*0tnrOeLw|4KpL228JLMIq;Eid3Qp4i0fcVg5+J?_ n#413{PNac9L2(J=00bBSI@)&56%FA}00000NkvXXu0mjfN^nc_ literal 0 HcmV?d00001 diff --git a/src/FeaturesPlugin/plugin-Features.xml b/src/FeaturesPlugin/plugin-Features.xml index 88b649b33..00dddaf5f 100644 --- a/src/FeaturesPlugin/plugin-Features.xml +++ b/src/FeaturesPlugin/plugin-Features.xml @@ -175,7 +175,7 @@ + icon="icons/Features/basicproperties.png" helpfile="geometryCalculationFeature.html" abort_confirmation="false">